//创建一个抽象类shape
public abstract class shape {
protected double PI = 3.14;//该类包括一个成员变量PI,初始值为3.14
public shape(){
//另外该类还包括一个无参数的构造方法,该方法可打印一句话:
//shape constructor is calling。
System.out.println("shape constructor is calling");
}
//该类包括一个抽象的show方法,方法体为空
public abstract void show();
}
//创建一个圆形类circle,该类继承自shape类
public class circle extends shape{
//该类包括一个变量r
private double r;
public circle(double r){
//带一个参数的构造方法,
//通过该方法可以实现对r的赋值
this.r=r;
}
public void show() {
//另外包括一个show方法,
//可以显示出圆形的面积
System.out.println(PI*r*r);
}
}
//创建一个扇形类fan,该类继承自shape类
public class fan extends shape{
//该类包括两个变量r和angle
private double r;
private double angle;
public fan(double r,double angle){
//一个带两个个参数的构造方法,
//通过该方法可以实现对r和angle的赋值
this.r=r;
this.angle=angle;
}
public void show() {
System.out.println(angle*PI*r*r/360 );
}
}
public class Test {
// 创建一个类Test,
// 该类中分别通过circle类和fan类的构造方法来创建对象,
// 然后分别显示出各自的面积来
public static void main(String[] args) {
circle c = new circle(1.2);
c.show();
fan f = new fan(1.1, 23);
f.show();
}
/**
* 输出结果
* shape constructor is calling
* 4.521599999999999
* shape constructor is
* calling 0.24273944444444448
*/
}
对于上面的问题1楼回答的很好,补充问题是这样:
在Java程序中,通过类的定义只能实现(单)重继承,但通过(接口)的定义可以实现多重继承关系。