zoukankan      html  css  js  c++  java
  • JAVA 子类和父类之间的调用 构造方法

    回顾基础知识:

    1.如果一个类中没有定义构造器,编译器在编译时会自动加上默认无参构造器

    定义格式:public ClassName() {}

    2. this 和 super 的区别。

    3.每个类直接或间接是Object的子类,Object只有一个无参构造方法。

    4.编译器会在每个构造方法的第一行隐式添加父类的默认无参构造器,即添加super()。

     

    容易犯的错误:

    class Family extends Object {

    public Family(int member) {

    }

    }

    class Father extends Family {

    public Father() {

    }

    }

     

    以上代码会产生编译错误:

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

     

    因为父类定义了一个带参数的构造器,因此编译器不会添加默认无参构造方法,

    但是因为在子类的构造器中没有显式调用父类的某个构造方法,因此编译器会自动添加super()方法,

    但是父类中不存在默认无参构造方法,因此会提示默认无参构造方法未定义错误。

     

    修改后的代码:

    class Family extends Object {

    public Family(int member) {

    }

    }

    class Father extends Family {

    public Father() {

    super(6);

    }

    }


    这样,在子类的构造器中显式调用了父类的某个构造器,所以编译器不会自动添加super()方法。

    weiyulan-1998
  • 相关阅读:
    FineReport自学习题第四题——图表
    SQL如何查询连续数字并且统计连续个数
    Arm Cortex-M3 MCU性能
    北汽蓝谷极狐阿尔法S与T
    长鑫存储DDR产品
    华虹宏力芯片制造主流工艺技术
    传统编译器与神经网络编译器
    Apple苹果公司组织架构
    GPU与CPU交互技术
    CMOS图像传感器与DDI显示芯片
  • 原文地址:https://www.cnblogs.com/weiyulan-1998/p/9016812.html
Copyright © 2011-2022 走看看