java基础学习 day42(继承中构造方法的访问特点,this、super的使用总结)

1. 继承中,构造方法的访问特点

  • 父类的构造方法不会被子类继承,但可以通过super()调用父类的构造方法,且只能在子类调用,在测试类中是不能手动单写构造方法的。
  • 子类中所有的构造方法默认先调用父类的无参构造,再执行自己构造方法的其他代码

2. 为什么会先默认调用父类的无参构造?

  • 子类在初始化的时候,有可能会使用到父类中的数据,如果此时父类中的数据没有完成初始化,只是单单定义了,子类就无法使用该父类的数据
  • 所以子类初始化之前,一定要调用父类构造方法完成父类数据空间的初始化
  • 虽然调用了父类的构造方法,但并没有创建父类对象(创建对象有很多步,单单一个构造方法不行)

3. 怎么调用父类构造方法的?

  • 子类构造方法的第一行语句默认都是:super(),不写虚拟机也会自动加上,且在有效代码第一行,写了虚拟机就不加了,但必须在有效代码第一行(注释不算)
  • 如果想调用父类有参构造,必须手动书写带参数的super()进行调用

4. this的使用总结

  • this:理解为一个局部变量,表示当前方法调用者的地址值,且仅在该方法内有效
  • 类的成员方法,构造方法内部都隐含了this变量(作为形参存在),当该方法被调用时,虚拟机就会把调用者的地址值赋给this
  • 类的方法内不与局部变量重名的成员变量,变量名前也隐含了this
  • 记住this只是在类的方法(成员方法,构造方法)内的一个局部变量。相反,this不是在创建对象时,被包含在对象里的。

5. super的使用总结

  • 代表父类的存储空间

6. this和super的使用方式
在这里插入图片描述

  • 若类的成员变量与局部变量不重名,那么前面的this可以省略不写
  • 在类里调用本类的成员方法时,前面的this也可以省略不写
  • this():
    a. 仅在构造方法中,用来调用本类的其他构造方法
    b. 一旦写完this(),虚拟机便不会添加super()了,因为其他构造的第一行已经写过super()了
    c. this()必须写在有效代码的第一行,如super()

猜你喜欢

转载自blog.csdn.net/u011453680/article/details/129113075
今日推荐