只问一个简单问题!!求解释。
class Circle
{
double x,y,r;
final double PI=3.1415926;
double Perimeter,Area;
//构造方法初始化
public Circle(double x,double y,double r)
{
this.x=x;
this.y=y;
this.r=r;
}
//周长
public double getPerimeter()
{
this.Perimeter=2*PI*r;
return this.Perimeter;
}
//面积
public double getArea()
{
this.Area=PI*r*r;
return this.Area;
}
}
public class Cylinder extends Circle
{
int high;
double area;
double volume;
public Cylinder(int high)
{
super(2.0,3.0,50); //这一句如果不加,则显示找不到符号.是因为继承里面`子类与父类必须的构造方法?调用?这里有点含糊.望细解.
this.high=high;
}
//设置高.
public void setHigh(int high)
{
this.high=high;
}
//获取高.
protected int getHigh()
{
return this.high;
}
//计算表面积
public void getArea(Circle p1)
{
area=p1.getArea()*2+p1.r*2+high;
}
//计算体积
public void getVolume(Circle p1)
{
volume=p1.getArea()*high;
}
public static void main(String []args)
{
Cylinder px=new Cylinder(20);
Circle pxy=new Circle(1.0,2.0,3.0);
px.setHigh(15);
px.getArea(pxy);
System.out.println("表面积:"+px.area);
px.getVolume(pxy);
System.out.println("体积:"+px.volume);
}
}
/*
**/
----------------解决方案--------------------------------------------------------
不加的话。。x y r就得不到值
----------------解决方案--------------------------------------------------------
回复 2楼 husiwen
我主函数main()
开头 有这句话`调用父类的构造方法。
Circle pxy=new Circle(1.0,2.0,3.0);
----------------解决方案--------------------------------------------------------
回复 3楼 默默学习
你的new Circle()写在main()中。。那么你要实现可以在Cylinder里写个构造方法是Cylinder(Cirlce c,...)
----------------解决方案--------------------------------------------------------
回复 4楼 husiwen
(1.)在父类中添加默认构造方法.
(2.)在子类中添加构造方法首句中添加super调用父类构造方法.
因为继承概念中: 构造一个子类的时候,编译器会自动调用父类默认构造方法,然而已经设置了有参构造方法,所以系统提示找不到符号.
则可以用(1.)在父类中添加默认构造方法. 或者在子类中添加构造方法,利用super语句调用父类构造方法.
你觉得这个解释怎么样,.
----------------解决方案--------------------------------------------------------
提示: 作者被禁止或删除 内容自动屏蔽