关于抽象类的一个例题

hailun 2006-06-02 11:51:48
abstract class Figure{
double dim1;
double dim2;
Figure(double a,double b){
dim1=a;
dim2=b;
}
abstract double area(); //为什么没有它会出错呢
}
class Rectangle extends Figure{
Rectangle(double a,double b){
super(a,b);
}
double area(){ //不是子类自己的方法吗?
System.out.println("Inside Area for Rectangle.");
return dim1*dim2;
}
}
class Triangle extends Figure{
Triangle(double a,double b){
super(a,b);
}
double area(){
System.out.println("Inside Area for Triangle.");
return dim1*dim2/2;
}
}
class AbstractAreas{
public static void main(String args[]){
Rectangle r=new Rectangle(9,5);
Triangle t=new Triangle(10,8);
Figure figref;
figref=r;
System.out.println("Area is"+figref.area());//这个area()方法不是子类的吗?
figref=t;
System.out.println("Area is"+figref.area());
}
}
...全文
143 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
yy80680169 2006-06-03
  • 打赏
  • 举报
回复
父类中抽象的方法就是为了让子类去覆盖它
主类的部分就属于多态了
zqsntws 2006-06-03
  • 打赏
  • 举报
回复
同意楼上的说法,你直接输出r.area()和t.area()就可以了。
f_acme 2006-06-03
  • 打赏
  • 举报
回复
抽象类里面有抽象方法area去掉的时候,在main方法里面你将figref=r; 将一个子类转换为父类,如果父类里面没有子类的方法,当然你再调用figref.area()的时候就出错了。

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧