继承
为什么使用继承
因为在很多情况下有许多类有共同的属性和方法,我们可以把这些共同的合并到一个父类中。
为了减少代码冗余和方便扩充。
使用继承优化后
如何使用继承
继承是代码重用的一种方式:将子类共有的属性和行为放到父类中。
Super关键字来访问父类的成员
1. Super只能出现在子类的方法和构造方法中
2. super 调用构造方法时,只能是第一句
3. super不能访问private的成员
子类访问父类成员
访问父类构造方法:
Super();
Super(name);
访问父类属性:
Super.name;
访问父类的方法:
Super.print();
注:
super表示关键字,super代表父类对象。
在子类构造方法中,super 调用父类构造方法时,只能是第一句。
子类不能继承父类的:
- Private成员
- 子类与父类不在同包时,使用默认访问权限的成员
- 构造方法。(不能被继承也不能被重写只能被加载)
访问修饰符(protected):
可以修饰属性和方法
本类、同类、子类可以访问
访问修饰符的总结:
多重继承关系的初始化顺序:
自上而下的继承:先父类的父类->再到父类->子类
在子类中:父类的无参构造可以不写,会默认加载;带参构造要写。
方法重写
实例:
先是主类Pet定义了共同拥有属性和方法
狗狗类使用方法重写:
Test测试类:在创建对象是赋值了小黑和拉布拉多;但是在后面又传入了中华田园覆盖了拉布拉多。
结果为:方法重写实现了。
方法重写的规则
- 方法名相同
- 参数列表相同
- 返回值类型相同或者是其子类
- 访问权限不能严于父类