|
[/code] 一个abstract类只关心它的子类是否具有某种功能,并不关心功能的具体行为,功能的具体行为由子类负责实现,抽象类中的抽象方法可以强制子类必须给出这些方法的具体实现.理解下面的例子来充分学习抽象类. [code] abstract class 图形 { public abstract double 求面积();//相当于给子类们发出了求面积的具体表现命令 } class 梯形 extends 图形 { double a,b,h; 梯形(double a,double b,double h) { this.a=a; this.b=b; this.h=h; } public double 求面积()//子类梯形类实现了求面积功能 { return((1/2.0)*(a+b)*h); } } class 圆形 extends 图形 { double r; 圆形(double r) { this.r=r; } public double 求面积()//子类圆形类实现了求面积功能 { return(3.14*r*r); } } class 堆 { 图形 底;//只是声明 double 高; 堆(图形 底,double 高)//调用时候就可以用上转型对象来解释为什么了 { this.底=底; this.高=高; } void 换底(图形 底) { this.底=底; } public double 求体积() { return (底.求面积()*高)/3.0; } } public class Example { public static void main(String args[]) { 堆 zui; 图形 tuxing; tuxing=new 梯形(2.0,7.0,10.7); System.out.println("梯形的面积"+tuxing.求面积()); zui=new 堆(tuxing,30); System.out.println("梯形底的堆的体积"+zui.求体积()); tuxing=new 圆形(10); System.out.println("半径是10的圆的面积"+tuxing.求面积()); zui.换底(tuxing); System.out.println("圆形底的堆的体积"+zui.求体积());
| |