继承基本总结,关注一下,方便交流哦
首先一个大概念就是: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)不允许返回值数据类型不相同的情况