• 关于继承中的super()调用父类构造方法


    super

    super可以理解为是指向自己超(父)类对象的一个指针,而这个超类指的是离自己最近的一个父类。

    每当你new一个子类对象的时候,子类对象都隐式内置了一个父类对象。
    所以说,为了那个内置的父类对象,也需要进行初始化。

    因为这个父类对象需要初始化,所以必须调用构造方法进行初始化,什么时候调用构造方法呢?

    在子类的构造方法里面调用super,如果父类中含有无参构造方法,子类构造方法会隐式调用了一句super(),因此对于无参构造函数,super()可写,可不写,

    如果父类里面没有定义参数为空的构造函数,那么必须在子类的构造函数的第一行显示的调用super(参数);语句调用父类当中其它的构造函数。

    子类对象调用父类方法

    当一个类继承于另一个类,子类中没有父类的方法时。用子类的对象调用方法时,会首先在子类中查找,如果子类中没有改方法,再到父类中查找。
    当一个方法只在父类中定义时,调用该方法时会使用父类中的属性。 
    如果该方法中又调用了其他方法,那么还是按照之前的顺序,先在子类中查找,再在父类中查找。

    1、为什么在实例化子类的对象的时候会调用先调用父类的构造函数?

    答:因为子类继承父类之后,获取到了父类的内容(属性/字段),而这些内容在使用之前必须先初始化,所以必须先调用父类的构造函数进行内容的初始化.

    2、在什么地方调用基类的构造函数?

    答:在子类的构造函数中,如果无参数,的第一行会隐士的调用 super();子句,即调用了父类的构造函数

    如果父类里面没有定义参数为空的构造函数,那么必须在子类的构造函数的第一行显示的调用super(参数);语句调用父类当中其它的构造函数.

    如果子类当中的构造函数的第一行写了this();那么就隐士的那个super();语句就会消失..因为super()和this()都只能定义在构造函数的第一行.

  • 相关阅读:
    intellij idea 修改web端口号
    intellij idea有时候有时候服务器报错500
    由于没有更新主分支的代码,总是报警
    intellij idea 快捷键
    intellij idea 修改文件名失败
    [Introduction to programming in Java 笔记] 1.3.8 Gambler's ruin simulation 赌徒破产模拟
    [Introduction to programming in Java 笔记] 1.3.7 Converting to binary 十进制到二进制的转换
    C++学习笔记-2-构造函数和析构函数
    python学习笔记--随时更新
    C++学习笔记-1-自增和自减运算符
  • 原文地址:https://www.cnblogs.com/alsf/p/9286821.html
Copyright © 2020-2023  润新知