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,继承,子类,构造,父类,重点,属性 来源: https://www.cnblogs.com/RobertYu666/p/14952167.html