class Cpoint
{
    int x,y;    Cpoint(){}    Cpoint(int x1,int y1){
       x=x1;
       y=y1;
    }
    int getX(){
       return x;
    }
    int getY(){
       return y;
    }
}
class Cquare extends Cpoint{
    int l,x,y;    Cquare(int z,int m,int n){
       x=m;
       y=n;
       l=z;
    }
    int area(){
       return l*l;
    }    void show(){
        System.out.println(getX()+","+getY());
        System.out.println(area());
    }
}
class Test34{
    public static void main(String args[]){        Cquare j=new Cquare(5,5,5);
        Cpoint k=new Cpoint(3,5);
        j.show();
    }
}

解决方案 »

  1.   

    getX() getY() 调用的是从父类继承的方法,返回的x,y也是父类的,由于父类的xy没有初始化,所以是0
      

  2.   

     class Cpoint
    {
        static int x,y;//声明为静态的    Cpoint(){}    Cpoint(int x1,int y1){
          x=x1;
           y=y1;
        }
        int getX(){
           return x;
        }
        int getY(){
           return y;
        }
    }
    class Cquare extends Cpoint{
        int l,x,y;    Cquare(int z,int m,int n){
           x=m;
           y=n;
           l=z;
        }
        int area(){
           return l*l;
        }    void show(){
            System.out.println(getX()+","+getY());
            System.out.println(area());
        }
    }
    class Test34{
        public static void main(String args[]){        Cquare j=new Cquare(5,5,5);
            Cpoint k=new Cpoint(3,5);
            j.show();
        }
    }
     
     
    父类的变量声明为静态的
      

  3.   

    同意二楼的,可以通过如下代码进行测试:把class Cquare中的show()函数输出改为:
    void show(){
            System.out.println(“getFromFather” + getX()+","+getY());
            System.out.println(“getFromSelf” + getX()+","+getY());
            System.out.println(area());
        }
    输出为:
    getFromFather:0,0
    getFromSelf:5,5
    25
      

  4.   

    Cquare j=new Cquare(5,5,5);
    这里new一个Cquare对象时必须调用父类的无参构造方法,
    而Cpoint(){}中x,y并没有赋值,所有getX()和getY()自然只能取成员变量的默认值0;
    25就不用解释了~