继承extends,继承内存布局,对象引用访问属性的规则_韩顺平听课笔记

1.为什么需要继承

  • 提高代码复用率

继承extends,继承内存布局,对象引用访问属性的规则_韩顺平听课笔记

2.继承原理图

  • 继承基本介绍和示意图:

继承extends,继承内存布局,对象引用访问属性的规则_韩顺平听课笔记

  • extends

继承extends,继承内存布局,对象引用访问属性的规则_韩顺平听课笔记

3.快速入门,继承解决代码冗余问题,一定要先extends,才能使用公共属性和方法

4.继承使用细节,继承给编程带来的便利

继承给编程带来的便利:

  • 代码的复用性提高了
  • 代码的扩展性和维护性提高了(父类增加一个方法,所有子类都能使用)

继承使用细节1:子类不能直接访问父类私有属性和方法(可以间接访问,非私有的属性和方法可以直接访问),父类提供公共方法访问私有的属性或方法

继承extends,继承内存布局,对象引用访问属性的规则_韩顺平听课笔记

继承extends,继承内存布局,对象引用访问属性的规则_韩顺平听课笔记

  • 父类的所有属性方法,子类都继承了,不过私有的无法直接访问

继承extends,继承内存布局,对象引用访问属性的规则_韩顺平听课笔记

5.继承使用细节

继承使用细节2:子类必须调用父类的构造器,完成父类的初始化(子类构造器隐藏super(); => 默认调用父类的无参构造器)

继承使用细节3:父类没有默认构造器的情况下,被子类调用

继承extends,继承内存布局,对象引用访问属性的规则_韩顺平听课笔记

6.继承使用细节

继承使用细节4:如果希望指定去调用父类的某个构造器,则显示的调用一下:super(参数列表)

继承使用细节5:super在使用的时候,必须放在构造器的第一行(super只能在构造器中使用)

继承使用细节6:super和this都只能放在构造器的第一行,因此使用了super就不能使用this,两者不能共存

继承extends,继承内存布局,对象引用访问属性的规则_韩顺平听课笔记

7.继承使用细节

继承使用细节7:Object是所有类的基类

继承extends,继承内存布局,对象引用访问属性的规则_韩顺平听课笔记

继承使用细节8:父类构造器的调用不限于直接父类,将一直往上追溯到Object类(*父类),所有父类的构造器都会被调用,Object的无参构造器没有输出

继承extends,继承内存布局,对象引用访问属性的规则_韩顺平听课笔记

8.继承使用细节

继承使用细节9:Java中是单继承机制:子类只能继承一个父类(指直接继承),中转继承

继承extends,继承内存布局,对象引用访问属性的规则_韩顺平听课笔记

继承使用细节10:不能滥用继承,子类和父类之间必须满足 is-a的逻辑关系

继承extends,继承内存布局,对象引用访问属性的规则_韩顺平听课笔记

9.继承本质详解

创建子类时,内存中发生了什么? 建立查找关系

继承extends,继承内存布局,对象引用访问属性的规则_韩顺平听课笔记

演示案例-继承的内存布局:

继承extends,继承内存布局,对象引用访问属性的规则_韩顺平听课笔记

  • new Son();时,最先加载*父类Object信息,然后逐级向下加载类信息,并建立继承关系
  • 堆中分配内存空间(对象),从父类开始逐级向下,创建对象信息(独立空间,可以有相同名字的属性)
  • 堆中内存空间分配给son对象引用

继承extends,继承内存布局,对象引用访问属性的规则_韩顺平听课笔记

对象引用访问属性的规则:按照查找关系返回信息

继承extends,继承内存布局,对象引用访问属性的规则_韩顺平听课笔记

  • 如果要访问信息为private,则报错,且不能继续向上查找访问
  • 私有属性在内存中依旧存在,只是不能访问

10.继承练习1,默认super(),super(),this()不可同时存在

继承extends,继承内存布局,对象引用访问属性的规则_韩顺平听课笔记

11.继承练习2

  • 注意hahah

继承extends,继承内存布局,对象引用访问属性的规则_韩顺平听课笔记

12.继承练习3

继承extends,继承内存布局,对象引用访问属性的规则_韩顺平听课笔记

Computer类中没有默认无参构造器,子类PC继承Computer,PC的默认无参构造器,会默认调用Computer的无参构造器,因此报错

继承extends,继承内存布局,对象引用访问属性的规则_韩顺平听课笔记

父类构造器完成父类信息初始化,子类构造器完成子类信息初始化

继承extends,继承内存布局,对象引用访问属性的规则_韩顺平听课笔记

输出PC信息,调用父类的getDetail方法:

继承extends,继承内存布局,对象引用访问属性的规则_韩顺平听课笔记

上一篇:构造函数,抽象类


下一篇:vue-super-flow的使用