1.高手帮忙设计一个java程序 急用 题目如下 定义一抽象类Column,然后
import java.lang.StrictMath.*;
abstract class Column
{
static double s_length; //length 是保留字所以没有用它
static double s_width;
static double s_height;
abstract double getArea();
abstract double getVolume();
abstract void display();
}
class Cylinder extends Column //圆柱体
{
double area;
double volume;
private final double PI=Math.PI; //对PI的使用
void getData(double l,double w, double h)
{
s_length=l; s_width=w; s_height=h;
}
double getVolume()
{
return volume=(s_width*s_width/4)*PI*s_height;
}
double getArea()
{
return area=(PI*s_width*s_height)*(s_width*s_width/2)*PI*s_height;
}
void display()
{
System.out.print("体积:"+getVolume()+" 面积:"+getArea());
}
}
/*
class Cube extends Column //立方体
{
与Cylinder 类似
}
class Ball extends Column //球
{
与Cylinder 类似
}
*/
public class Test
{
public static void main(String args[] )
{
Cylinder yzt=new Cylinder();
yzt.getData(8,2,4);
yzt.getVolume();
yzt.getArea();
yzt.display();
}
}
2.java定义一个抽象类Person 在其中定义一个抽象函数pay(),然后从
Java程序:
//抽象人类
abstract class Person {
//薪水
protected double salary;
public Person() {
this.salary = 0;
}
public Person(double salary) {
this.salary = salary;
}
//抽象方法
abstract void pay();
}
//工人类
class Worker extends Person {
public Worker(double salary) {
super(salary);
}
@Override
void pay() {
System.out.println("工人工资:" + salary);
}
}
//程序员类
class Programmer extends Person {
public Programmer(double salary) {
super(salary);
}
@Override
void pay() {
System.out.println("程序员工资:" + salary);
}
}
public class Main {
public static void main(String[] args) {
Person p; //声明抽象类对象
p = new Worker(5000); //用子类实例化抽象类对象
p.pay(); //调用被实现的方法
p = new Programmer(8000); //用子类实例化抽象类对象
p.pay(); //调用被实现的方法
}
}
运行测试:
工人工资:5000.0
程序员工资:8000.0
3.JAVA抽象类可以继承抽象类
您好,提问者:
1、抽象类只是一个特殊的类,但是也具备类的特性。
2、如果这个类中有抽象方法,那么这个类必须定义为抽象类。
3、如果这个抽象类继承了别的抽象类,那么可以不覆盖抽象方法。
因为:这个抽象类也是抽象的,没办法实现方法体。
例如一下代码:
abstract class A{
abstract void add();
public void delete(){}
}
abstract class B extends A{
//继承了抽象A类,因为也是抽象的,可以不写抽象方法,当然也可以重写抽象方法(切记抽象方法是没有方法体的)
//abstract void add(); //也是没有问题的
abstract void getXX();
}
public class extends B{
//必须实现抽象方法
//继承了B,也就继承了A,A B方法都有,所以必须重写这两个抽象类的抽象方法
public void add(){}
public void delete(){}
public void getXX(){}
}
4.java代码,写一个类,包括抽象类,终结类和普通类
当定义一个类时,除了声明类的访问权限之外,有时还需要声明类的继承特性。即声明一个类是否为抽象类或是最终类,使用abstract修饰符声明抽象类,使用final修饰符声明最终类。
1。抽象类:
1〉声明抽象类与抽象方法:
eg. publicabstractclass PlaneGraphcs1
{
publicabstractdouble area(); //分号必不可少
}
抽象方法是只有方法声明而没有方法体的成员方法。抽象类中可以不包含抽象方法,但是包含抽象方法的类必须声明为抽象类。构造方法,类成员方法不能被声明为抽象方法。
2〉抽象类不能被实例化。
抽象类不能被实例化,即使抽象类中没有包含抽象类方法,也不能创建抽象类的实例。下列语句产生语法错误:
PlaneGraphics1 g1 =new PlaneGraphics1(); //语法错误,抽象类不能实例化
3〉抽象类与抽象方法的作用:
抽象类用于描述抽象的概念,抽象方法用于声明方法的参数和返回值,抽象方法的具体实现由抽象子类完成。子类必须覆盖父类的抽象方法。
抽象类声明的抽象方法约定了多个子类共用的方法声明,每个子类可以根据自身的实际情况,给出抽象方法具体的实现。显然不同的子类可以有不同的方法实现。因此,一个抽象方法在多个子类中表现出多态性。抽象类提供了方法声明与方法实现分离的机制。使得多个不同的子类能够表现出共同的行为能力。
4〉抽象方法必须被子类覆盖:
由于抽象方法在抽象类中没有具体的方法实现,所以抽象方法必须被子类覆盖。反之,如果一个子类不能覆盖父类的抽象方法,则该类自己也必须声明为抽象类。
5〉抽象方法的必要性:
如果一个方法需要被子类覆盖,则必须声明为抽象方法。例如PlaneGraphics1类也可以声明area()方法不是抽象方法。则PlaneGraphics1类也不必声明为抽象类。声明如下:
eg .
public class PlaneGraphics1 //平面图形类,非抽象类
{
public double area() / /非抽象方法,必须有方法体
{
return 0;
}
}
public abstract class PlaneGraphics1 { //平面图形类,抽象类
5.java抽象类继承具体类有什么用
这个用处是很大的啊。
1、抽象类与接口紧密相关,它们不能示例化,并且常常部分实现或根本不实现。抽象类和接口之间的一个主要差别是:类可以实现无限个接口,但仅能从一个抽象(或任何其他类型)类继承。从抽象类派生的类仍可实现接口。
2、具体应用时,可以在创建组件时使用抽象类,因为它们使您得以在某些方法中指定不变级功能,但直到需要该类的特定实现之后才实现其他方法。
3、抽象类也制定版本,因为如果在派生类中需要附加功能,则可以将其添加到基类而不中断代码。如果在开发大型项目时,对于一个派生类功能的增添,就可以直接在抽象类中添加特定的方法,在后期派生类的使用时即可对该方法进行操作的实例化而不会对以前的方法造成任何影响(因为抽象类可以部分实现,以前应用的派生类就可以不做更改)。
转载请注明出处育才学习网 » java从抽象类派生出类怎么写