1.为什么需要继承
2.继承原理图
3.快速入门,继承解决代码冗余问题,一定要先extends,才能使用公共属性和方法
4.继承使用细节,继承给编程带来的便利
继承给编程带来的便利:
继承使用细节1:子类不能直接访问父类私有属性和方法(可以间接访问,非私有的属性和方法可以直接访问),父类提供公共方法访问私有的属性或方法
5.继承使用细节
继承使用细节2:子类必须调用父类的构造器,完成父类的初始化(子类构造器隐藏super(); => 默认调用父类的无参构造器)
继承使用细节3:父类没有默认构造器的情况下,被子类调用
6.继承使用细节
继承使用细节4:如果希望指定去调用父类的某个构造器,则显示的调用一下:super(参数列表)
继承使用细节5:super在使用的时候,必须放在构造器的第一行(super只能在构造器中使用)
继承使用细节6:super和this都只能放在构造器的第一行,因此使用了super就不能使用this,两者不能共存
7.继承使用细节
继承使用细节7:Object是所有类的基类
继承使用细节8:父类构造器的调用不限于直接父类,将一直往上追溯到Object类(顶级父类),所有父类的构造器都会被调用,Object的无参构造器没有输出
8.继承使用细节
继承使用细节9:Java中是单继承机制:子类只能继承一个父类(指直接继承),中转继承
继承使用细节10:不能滥用继承,子类和父类之间必须满足 is-a的逻辑关系
9.继承本质详解
创建子类时,内存中发生了什么? 建立查找关系
演示案例-继承的内存布局:
对象引用访问属性的规则:按照查找关系返回信息
10.继承练习1,默认super(),super(),this()不可同时存在
11.继承练习2
12.继承练习3
Computer类中没有默认无参构造器,子类PC继承Computer,PC的默认无参构造器,会默认调用Computer的无参构造器,因此报错
父类构造器完成父类信息初始化,子类构造器完成子类信息初始化
输出PC信息,调用父类的getDetail方法: