继承的用途
继承主要是为了避免代码的重复书写,能够有效的复用代码
特点
1.子类会继承上级类的方法,属性,(即除构造方法外的一切内容),
就是说子类会获得父类的功能。
2.子类可以覆盖父类的方法。
覆盖:由子类重新定义继承下来的方法以改变或者延伸此方法的行为
3.则类继承父类的实例变量和方法但也可以加入自己的实例变量和方法亦可以覆盖继承自父类的方法。
继承树
1、找出具有共同属性和行为的对象
2、设计代表共同状态和行为的类
3、决定子类是否需要对方法进行覆盖
4、通过寻找使用共同行为的子类来找出更多的抽象化机会(即针对对象寻求其共同点,将有多数共同行为的子类划分到同一范围)
5、完成类的继承层次。
关于继承层次上的方法特性
在创建对象后:调用方法,会先从最低级的子类中开始寻找方法,找到后就会调用,找不到就向上一级父类中寻找,直到找到为止。
IS-A测试
A是一个B/A是B的一种
父类无法使用子类的方法.
子类可以通过 super. 关键字调用父类的方法和实例变量。
继承中的权限
父类可以通过存取权限决定子类能否继承某些特定的成员
4种存取权限
private 不会被继承(或者说不能被访问)
default 同一个包中的不同类可以访问
protected 不同包中的子类可以访问
public 不同包中的非子类也可以访问
子类继承父类关键字 extends
继承的方法可以被覆盖,但实例变量不会
如果A是B的子类,B是C的子类,那么A可以通过C的IS-A测试
继承:
1、避免了城府的代码程序
2、定义出共同协议
所有的子类都会有父类的全部方法