Java教程

Java继承重点

本文主要是介绍Java继承重点,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

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

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继承重点的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!