继承基本总结,关注一下,方便交流哦

首先一个大概念就是:Java不支持多继承,但支持多实现(接口)。

即一个类只有一个父类,没有多个父类,而且是多层继承,即A类继承B类,B类继承C类,C类继承了D类这样一层一层的继承下来。

实际上,Java通过接口与内部类,就可以实现C++多继承同样的效果。

一,子类会继承到父类什么呢?

1,子类会自动继承父类中所有定义的非private的成员变量和普通方法,而且这些成员在父类中是什么样的属性,子类继承下来后,也是同样的属性,属性指访问权限,static,final这些修饰符。

2,那么构造方法呢,首先我们知道,构造方法不会有private,static,final 修饰符,没有返回值。

(1)带参数的构造方法,不会由子类继承,也不会自动调用。

(2)子类会使用父类的无参数的构造方法作为自己的无参构造方法。

二,成员变量的隐藏,方法的覆盖

继承后,子类中的成员与父类的成员相同,则会出现隐藏与覆盖。

1,相同的成员变量,就叫隐藏,因为子类中的成员变量优先与父类成员变量,子类创建对象时,使用的是子类自己的成员变量,父类同名的成员变量不会调用到,看起来就像是被隐藏了,当然,只是隐藏了,要用到父类同名的成员变量,就可以用” super . ” 调用。

2,相同的成员方法,就叫覆盖,覆盖要满足两个方面:

(1),成员方法的名称要相同;

(2),方法的参数要完全相同,即参数的类型,个数,顺序这三个方面也要相同。

不相同,则会是重载的情况。

三,变量有访问权限修饰符,静态static修饰符,常量final修饰符,数据类型说明等等各种不同属性。

那么在成员变量隐藏,方法覆盖时,会出现各种情况。

1,成员变量

(1)修饰符全部相同时的情况。

(2)修饰符不相同时的情况。

a,访问权限不相同的情况。

b,静态修饰符不相同的情况。

c,常量修饰符不相同的情况。

d,数据类型不相同的情况。

2,成员方法

上一章节知道,方法的声明格式是:

[ 修饰符 ][ 方法返回值类型 ] 方法名 ( [ 形式参数表 ] )

(1)修饰符完全相同时的情况。

(2)修饰符不相同时的情况。

a,访问权限不相同的情况

子类方法的访问权限只允许权限更宽松,不允许更严格.

b,静态修饰符不相同的情况

静态方法不允许被实例方法覆盖,

实例方法也不允许用静态方法覆盖。


c,final修饰符不相同的情况

最终方法,它的子类不能覆盖该方法。

非最终方法,可以在子类中将其变成最终方法。

(3)不允许返回值数据类型不相同的情况