1.为什么需要继承
- 提高代码复用率
2.继承原理图
- 继承基本介绍和示意图:
- extends
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.继承本质详解
创建子类时,内存中发生了什么? 建立查找关系
演示案例-继承的内存布局:
- new Son();时,最先加载*父类Object信息,然后逐级向下加载类信息,并建立继承关系
- 堆中分配内存空间(对象),从父类开始逐级向下,创建对象信息(独立空间,可以有相同名字的属性)
- 堆中内存空间分配给son对象引用
对象引用访问属性的规则:按照查找关系返回信息
- 如果要访问信息为private,则报错,且不能继续向上查找访问
- 私有属性在内存中依旧存在,只是不能访问
10.继承练习1,默认super(),super(),this()不可同时存在
11.继承练习2
- 注意hahah
12.继承练习3
Computer类中没有默认无参构造器,子类PC继承Computer,PC的默认无参构造器,会默认调用Computer的无参构造器,因此报错
父类构造器完成父类信息初始化,子类构造器完成子类信息初始化
输出PC信息,调用父类的getDetail方法: