继承:
继承性的说明
1.一个类可以被多个子类继承。(一个爹可以有多个儿子)
2.Java中类的单继承性:一个类只能有一个父类。(一个儿子只能用一个爹)
3.子父类是相对的概念。
4.子类直接继承的父类,称为:直接父类。间接继承的父类称为:间接父类。
5.子类继承父类以后,就获取了直接父类以及所间接父类中声明的所有属性和方法。
特别的,父类中声明为private的属性或方法,子类继承父类以后,仍然认为获取了父类中私有的结构。只是因为封装性的影响,使得子类不能直接调用父类的结构而已。
继承的好处:
① 减少了代码的冗余,提高了代码的复用性。
② 便于功能的扩展。
③ 为之后多态性的使用,提供了前提。
多态性
对象的多态性:父类的引用指向子类的对象(子类的对象赋给父类的引用)。(运行时行为)
有了对象的多态性以后,我们在编译期,只能调用父类中声明的方法,但在运行期,我们实际执行的是子类重写父类的方法。(属性无法被重写,所以执行的依然是父类中的属性)
方法的重写
方法的重写:子类继承父类后对同名同参数的方法的覆盖操作。
规则:
1、子类重写的方法的方法名及形参列表必须与父类被重写的方法相同,方法体不同;
2、子类重写的方法的权限修饰符必须大于等于父类被重写的方法,特别地,父类中private修饰的方法不能被重写;
3、父类返回值类型为void或者基本数据类型的方法在子类中重写后的返回值类型必须一致;
返回值类型为引用数据类型(类) 的方法重写后的返回值类型可为该类或者其子类。
重写表现为多态性,在调用时才会确定使用的方法。
方法的重载:
“两同一不同”:在同一个类(包括其子类)中,方法名相同,而形参列表(包括形参的类型,个数,位置等)不同的两个方法构成重载。跟方法的权限修饰符、返回值类型、形参变量名、方法体都没关系!
重载的方法在运行前编译器就已经确定使用的方法,不表现为多态性。