继承知识点总结

 

1. 继承中的初始化顺序:

类内部有:属性、方法。

类初始化:

在new创建对象时,首先对对象属性和初始化块分配内存,并执行默认初始化。如果存在父类,则先为父类对象属和初始化块先分配内存并执行初始化。

然后执行父类构造器中的初始化程序,接着才开始对子类的对象属性和初始化块执行初始化。

注:

1. 在对象初始化阶段,属性和方法均针对子类可以从父类继承过来的属性和方法而言,一般而言,都是针对父类中非private而言的。

因为private修饰的为父类所特有的,子类没有继承过来,当new子类时,无须为其分配空间并执行初始化。当然了,父类的构造器子类也是不继承过来的,

但构造器另当别论。

2. 类的初始化只执行一次,当对同一个类new多个对象时,类属性和类初始化块只初始化一次。

2.继承中的隐藏:

隐藏含义:实际上存在,但是对外不可见。

Java类具有三种访问控制符:private、protected和public,同时当不写这三个访问控制符时,表现为一种默认的访问控制状态。因此,一共具有四种访问控制级别。

具体访问控制表现如下:

private修饰的属性或方法为该类所特有,在任何其他类中都不能直接访问;

default修饰的属性或方法具有包访问特性,同一个包中的其他类可以访问;

protected修饰的属性或方法在同一个中的其他类可以访问,同时对于不在同一个包中的子类中也可以访问;

public修饰的属性或方法外部类中都可以直接访问。

当子类继承父类,子类可以继承父类中具有访问控制权限的属性和方法(一般来说是非private修饰的),对于private修饰的父类所特有的属性和方法,子类是不继承过来的。

当子类需要改变继承过来的方法时,也就是常说的重写父类的方法。一旦重写后,父类的此方法对子类来说表现为隐藏。以后子类的对象调用此方法时,都是调用子类重写后

的方法,但子类对象中想调用父类原来的此方法时,可以通过如下两种方式:

1.将子类对象类型强制转化为父类类型,进行调用;

2.通过super调用。

同样的,如果在子类中定义父类中相同名称的属性时,父类属性在子类中表现为隐藏。

 

3.继承中的this和super:

构造器中的this表示当前正在初始化的对象引用,方法中的this表示当前正在调用此方法的对象引用。this具体用法表现在一下几个方面:

1.当具多个重载的构造器时,且一个构造器需要调用另外一个构造其,在其第一行使用this(param)形式调用,且只能在第一行;

2.当对象中一个方法需要调用本对象中其他方法时,使用this作为主调,也可以不写,实际上默认就是this作为主调;

3.当对象属性和方法中的局部变量名称相同时,在该方法中需要显式的使用this作为主调,以表示对象的属性,若不存在此问题,可以不显式的写this。

其实,其牵涉到的一个问题就是变量的查找规则:先局部变量 => 当前类中定义的变量 => 其父类中定义的可以被子类继承的变量 => 父类...

super表示调用父类中相应的属性和方法。在方法中,若需要调用父类的方法时,也一定要写在第一行

你可能感兴趣的:(继承知识点总结)