设计一个点类,他仅包含两个属性:横坐标和纵坐标.通过继承点类再设计一个圆类,他除了有一个圆心还有半径,还应该能计算周长和面积等,编写一个程序来测试所设计的类能否实现预定功能.
我写的程序如下:
class Point{
int x;
int y;
Point(int x,int y){
this.x=x;
this.y=y;
}
}
 class Circle extends Point
{
double r,c,s;
public void getr(){
r=(x^2+y^2)^(1/2);
}
void getcands(){
c=2*3.14*r;
s=3.14*r*r;
}
void Show_Circle(){
System.out.println("c="+c+"s="+s);
}
}
 class Testpoint{
public static void main(String args[]){
Point e=new Point(3,4);
Circle a=new Circle();
a.getr();
a.getcands();
a.Show_Circle();
}
}

解决方案 »

  1.   

    Point e和Circle a在程序中并无关联啊!楼主可能以为Circle a是从Point e继承过来的把?
    两者并无关联
      

  2.   

    你试着把x,y设置为protected类型,试试!因为default类型在子类中是没有办法访问的!
      

  3.   

    你这个程序问题很多1.在你这个问题上,点和圆没有共性,圆继承于点没有任何意义。
    2.Circle没有构造函数,并且Point没有无参数的构造函数
    3.main函数位于Testpoint,而Testpoint不是public类,应该不会执行。
    4.main中的a根本没有初始值
    5.你的r是怎么得出来的?默认圆心是(0, 0)?
      

  4.   

    根楼上的看法有些不同:1.我认为从数学的观点来说,当半径为0时, 圆在坐标系上表现为一个点
    2.作者在程序中没有给Circle提供构造函数,这并不是问题,因为系统会使用默认的无参构造函数; 主要的问题发生在在Circle的无参构造函数被自动调用时的第一条语句是运行Point无参构造函数,但是作者没有为Point提供无参构造; 所以在Point加一个无参构造后就解决这个问题。3.并不能说main函数一定得在public类中, 非public类也可以,并且在可以正常运行; 比如这个程序可以在编译后提示符输入: java Testpoint运行;
    4.同楼上
    5.同楼上
      

  5.   

    同意楼上的 改成这样就行了:class Point{
    int x;
    int y;
    Point(int x,int y){
    this.x=x;
    this.y=y;
    }
    Point(){}
    }
     class Circle extends Point
    {
    double r,c,s;
    public Circle(int x1,int y1)
    {
    super(x1,y1);
    }
    public void getr(){
    r=(x^2+y^2)^(1/2);
    }
    void getcands(){
    c=2*3.14*r;
    s=3.14*r*r;
    }
    void Show_Circle(){
    System.out.println("c="+c+"s="+s);
    }
    }
     class Testpoint{
    public static void main(String args[]){
    Circle a=new Circle(3,4);
    a.getr();
    a.getcands();
    a.Show_Circle();
    }
    }