Java继承知识点总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/madman0621/article/details/80762594

1、继承

(1)子类拥有父类非private的属性和方法。
(2)子类可以拥有自己属性和方法,即子类可以对父类进行扩展。
(3)子类可以用自己的方式实现父类的方法。

2、继承中的初始化顺序

内部细致的执行顺序划分:
(1)父类的类变量的赋值动作、父类的静态代码块。
(2)子类的类变量的赋值动作、子类的静态代码块。
(3)父类的成员变量的赋值动作、父类的非静态代码块、父类的默认构造方法。
(4)子类的成员变量的赋值动作、子类的非静态代码块、子类的默认构造方法

3、继承中的属性与方法

(1)子类对父类的属性重新定义,可以重新定义值,也可以重新定义类型。
(2)如果子类对父类的一个同名的属性重新定义(就是重新赋值,被显示写在了子类的java文件中),此时从父类继承的属性将被隐藏,除非使用super关键字显式的调用。
(3)如果父类的父类声明了一个protected的属性,在父类中被重新定义为private的,那么在子类中访问这个属性时,将指向父类的那个属性,父类的父类的那个属性是无法访问到的,又因为父类的这个属性被定义为private的,所以子类是无法访问到这个属性的。
(4)当子类需要改变继承过来的方法时,也就是常说的重写父类的方法。一旦重写后,父类的此方法对子类来说表现为隐藏。以后子类的对象调用此方法时,都是调用子类重写后的方法,但子类对象中想调用父类原来的此方法时,可以通过如下两种方式:1.将子类对象类型强制转化为父类类型,进行调用;2.通过super调用。
(5)当子类中拥有2个同名属性时,一个是自己的,一个是父类的。在不使用super关键字的时候,当执行继承自父类的方法时,使用的是来自父类的属性,当执行自己的方法时,使用的是自己的属性。总结一句话就是,方法是谁的,就用谁的。
(6)如果在自己方法中使用super.method()来显式调用父类的方法,那么这个父类方法中执行用到的属性依然来自父类。这个地方尤其注意。
(7)对于被重新定义的static属性,在对其操作时不会对继承自父类的static属性产生影响,但是如果没有重新定义static属性,那么对其操作将会影响父类的static属性的值。
(8)覆盖是相对于继承中的方法的,覆盖的主要目的是:1. 使用相同参数表,实现的却是不同的功能。2. 在名字相同的方法中,子类做的要更多。3. 取消继承自父类的该方法,使用空语句块。
(9)对于继承过程中的构造函数:首先,父类的构造函数是不能继承的,其次如果要在构造函数中使用父类的构造函数,那么父类的构造函数必须放在首行,最后,如果不在构造函数中显式调用父类的构造函数,系统将默认在首行执行父类无参三构造函数。
(10)最重要的,子类不仅能继承来自父类的方法和属性,也能继承来自父类的父类的属性和方法(实际上,父类继承了来自父类的父类的属性和方法,在父类被子类继承时,这些来自父类的属性和方法原原本本得传给了子类)。

猜你喜欢

转载自blog.csdn.net/madman0621/article/details/80762594
今日推荐