码迷,mamicode.com
首页 > 编程语言 > 详细

Java继承重点

时间:2021-06-30 18:03:42      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:类构造   方法   super   属性   生成   使用   this   顺序   父类   

一、继承给编程带来的便利

1、代码的复用性提高了。

2、代码的扩展性和维护性提高了。

二、继承的使用细节

1、子类继承了所有的属性和方法,非私有的属性和方法可以在子类直接访问,但是私有属性和方法不能在子类直接访问,要通过父类提供公共的方法去访问。

2、子类必须调用父类的构造器,完成父类的初始化。

3、当创建子类对象时,不管使用子类的哪个构造器,默认情况下总会去调用父类的无参构造器,如果父类没有提供无参构造器,则必须在子类的构造器中用super去指定使用父类的哪个构造器完成对父类的初始化工作,否则,编译不会通过。

4、如果希望指定去调用父类的某个构造器,则显式的调用一下。

5.、super在使用时, 需要放在构造器第一行。
6.、super() 和this()都只能放在构造器第一行, 因此这两个方法不能共存在一个构造器。
7.、java所有类都是Object类的子类。

8、父类构造器的调用不限于直接父类!将一直往上追溯直到Object类(顶级父类)。

9、子类最多只能继承一个父类(指直接继承), 即java中是单继承机制。
10、不能滥用继承,子类和父类之间必须满足is-a的逻辑关系。

三、继承的本质分析(重要)

1.在方法区中加载类的信息,顺序依次为Object、GrandPa、Father、Son

2.在方法区中开辟"大头爷爷"、"旅游"这两个字符串的空间并生成地址0x22、0x33,然后在堆空间中用爷类的name、hobby指向"大头爷爷"、"旅游";

在方法区中开辟"大头爸爸"这个字符串的空间并生成地址0x44,然后在堆空间中用父类的name指向"大头爸爸",整型39赋值给父类的age;

在方法区中开辟"大头儿子"这个字符串的空间并生成地址0x55,然后在堆空间中用子类的name指向"大头儿子"。

3.将堆中为对象分配的0x11地址赋值给栈中的引用变量son(或者说son引用指向堆中的对象)

  这时请大家注意,要按照查找关系来返回信息:
(1) 首先看子类是否有该属性
(2) 如果子类有这个属性,并且可以访问,则返回信息
(3) 如果子类没有这个属性,就看父类有没有这个属性(如果父类有该属性,并且可以访问,就返回信息.)
(4) 如果父类没有就按照(3)的规则, 继续找上级父类,直到0bject...

技术图片

 

 

 

Java继承重点

标签:类构造   方法   super   属性   生成   使用   this   顺序   父类   

原文地址:https://www.cnblogs.com/RobertYu666/p/14952167.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!