灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:2910回复:0

[系统教程]JAVA新手入门(4)

楼主#
更多 发布于:2012-09-08 08:08


[/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.求体积());

喜欢0 评分0
游客

返回顶部