Java中的抽象类,为什么我的程序输出的结果都是0.0?

abstract class Shape{
abstract double ShowArea();
}
class Rectangle extends Shape{
double Area;
double i,j;
Rectangle(double x,double y){
i=x;
j=y;
}
double ShowArea(){
Area=i*j;
return Area;
}
}
class Square extends Shape{
double Area;
double i;
Square(double x){
i=x;
}
double ShowArea(){
Area=i*i;
return Area;
}
}
class Circle extends Shape{
double Area;
double i;
Circle(double x){
i=x;
}
double ShowArea(){
Area=i*i;
return Area;
}
}
public class Proprotion{
public static void main(String args[]){
Rectangle R=new Rectangle(2.1,3.4);
Square S=new Square(3.4);
Circle C=new Circle(6.7);
System.out.println("矩形的面积为:"+R.Area);
System.out.println("正方形的面积为:"+S.Area);
System.out.println("圆的面积为:"+C.Area);
}
}

第1个回答  2009-12-18
System.out.println("矩形的面积为:"+R.Area);
System.out.println("正方形的面积为:"+S.Area);
System.out.println("圆的面积为:"+C.Area);
这都是输出的属性,需要先调用ShowArea()方法才能得出相应的面积,不然输出的都是默认初始化为0的Area值。
第2个回答  2009-12-18
你的showArea都没有调用到!
System.out.println("矩形的面积为:"+R.ShowArea());
System.out.println("正方形的面积为:"+S.ShowArea());
System.out.println("圆的面积为:"+C.ShowArea());
这样才行本回答被提问者采纳
第3个回答  2009-12-18
在ShowArea()被调用前,你的Area成员一直是初始值:0
第4个回答  2009-12-18
你要先执行showArea方法
相似回答