Point(){} //去掉这一行,实际上没有缺省的构造方法了,而父类没有缺省构造方法,你必须在子类中使用"super(args)"调用父类的某个构造方法。

解决方案 »

  1.   

    加一句话
    Point3d(int ix,int iy,int iz) {
            super( ix, iy );//!!!!!!!!!!!!
            x=ix;
            y=iy;
            z=iz;
        }
    自己构造时,要现调用父类的构造函数
      

  2.   

    一个关于子类的构造问题
    请参看:Thinking in Java 2nd 前7章中对于继承构造的描述
      

  3.   

    public class Point
    {
    proceted int x, y;
    Point(int ix, int iy) {
    x = ix;
    y = iy;
    }
    Point(){} //去掉这一行,编译出错 public double distance() {
    return Math.sqrt(x * x + y * y);
    } public static void main(String args[]){
    Point P=new Point(1,1);
    System.out.println("p.distance()="+P.distance());
    Point3d p=new Point3d(1,1,1);
    System.out.println("p.distance()="+p.distance());
    }
    }class Point3d extends Point
    {
    private int z;
    Point3d(int ix,int iy,int iz){super(ix,iy);z=iz;}
    public double distance()
    {
    return Math.sqrt(x*x+y*y+z*z);
    }
    }
      

  4.   

    改成这样看看!注意
    super();
    proceted int x, y;
      

  5.   

    那个MAIN放到class Point3d里面
      

  6.   

    在子类的构造函数中放入super(ix,iy);应该是没有问题的
    不过,我想楼主应该将构造的知识系统地看一下 ^_^
      

  7.   

    完全同意 realzealy(国米无敌) 
    就是这样的
      

  8.   

    在构造方法的第一行如果没有显式的调用本类中其他构造方法(比如this())或者父类的构造方法的话,系统将自动调用父类的默认构造方法,一直上溯至Object类的默认构造方法为止。
    如果父类没有提供一个默认构造方法,而有一个或多个带参数的构造方法的话,系统不会自动为这个类生成默认构造方法,因此在继承的时候,就会出错。