zoukankan      html  css  js  c++  java
  • java 报错:Implicit super constructor Point() is undefined. Must explicitly invoke another constructor

    在做java的实验题时遇到了一个报错

    Implicit super constructor Point() is undefined. Must explicitly invoke another constructor

    程序的主要代码如下:

    public class Point {
        int x, y;
        //Point(){}//注意这一行
        Point(int a, int b){
            x = a;
            y = b;
        }
        public double distance() {
            return Math.sqrt(x*x+y*y);
        }
        void print() {
            System.out.println("This is the superclass!");
        }
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Point superp = new Point(1,1);
            System.out.println("superp.distance()="+superp.distance());
            superp.print();
            Point3d subp = new Point3d(1,1,1);
            subp.print();
    
        }
    
    }
    class Point3d extends Point{
        int z;
        Point3d(int i, int j, int k){//如果没有上面注释的那一行,这里就会报错
            x = i;
            y = j;
            z = k;
        }
        void print() {
            System.out.println("This is the subclass!");
        }
    }

    我们知道,Point3d继承了Point,那么在构造Point3d之前,就会先构造Point。
    new Point3d的时候用的是默认的构造函数,而子类默认的构造函数调用的也是父类默认的构造函数。
    但是父类有了人为指定的构造函数,就覆盖了本身自动生成的默认无参构造函数,换言之,父类没有无参构造函数,那么就出错了。

    所以解决办法是手动再在父类中添加一个无参的与默认构造函数形式相同的构造函数,即:

    public class Point {
        int x, y;
        Point(){}//注意这一行
        Point(int a, int b){
            x = a;
            y = b;
        }
  • 相关阅读:
    php笔记小结
    php知识总结(二)
    php知识点总结(一)
    js冒泡排序及计算其运行时间
    空中飘动的云动画
    网站建设教程:WordPress如何在虚拟主机上安装
    网站建设教程之PageAdmin建站系统的安装
    免费CMS建站系统哪个比较好?如何选择?
    网站建设之自助建站系统的选择?
    企业外贸网站制作的要求及注意事项
  • 原文地址:https://www.cnblogs.com/SophieWang-cmu/p/13929336.html
Copyright © 2011-2022 走看看