当前位置: 代码迷 >> Java相关 >> 只问一个简单问题!!求解释。
  详细解决方案

只问一个简单问题!!求解释。

热度:134   发布时间:2011-10-11 22:34:41.0
只问一个简单问题!!求解释。
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);
    }
   

}

/*

**/
搜索更多相关的解决方案: public  double  return  class  final  

----------------解决方案--------------------------------------------------------
不加的话。。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语句调用父类构造方法.

你觉得这个解释怎么样,.
----------------解决方案--------------------------------------------------------
提示: 作者被禁止或删除 内容自动屏蔽
2011-10-13 09:23:20
husiwen

等 级:蝙蝠侠
威 望:1
帖 子:200
专家分:963
注 册:2010-5-23
  得分:13 
回复 5楼 默默学习
交类的构造是无参的。就能自动调用,有参的你就必须给它参数  就是用super
----------------解决方案--------------------------------------------------------
了类继承父类,若子类的构造函数中没有super()函数,则子类的构造函数中会默认调用父类中的无参构造函数,而父类构造函数中没有无参,故编译时不通过~~
----------------解决方案--------------------------------------------------------
  相关解决方案