ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

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

2021-09-07 01:02:04  阅读:168  来源: 互联网

标签:继承 子类 构造 细节 extends 父类 super 顺平


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方法:

标签:继承,子类,构造,细节,extends,父类,super,顺平
来源: https://www.cnblogs.com/CH0701/p/15236450.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有