继承extends:一种机制,可以进行代码的重用 基类(父类 超类)子类(派生类) class Derieve extends Base
派生类继承了父类的除构造函数外的所有属性 super():调用构造函数(必须放第一行) super.data :访问基类的数据成员super.fun()调用基类的成员方法
派生类对象初始化顺序基类static 派生类static 基类instance 派生类instance 基类init 派生类init
基类的数据成员在派生类中的访问权限:
同包子类 同包非子类 不同包子类 不同包非子类
public 可以 可以 可以 可以
private 不可以 不可以 不可以 不可以
protected 可以 可以 可以 可以
默认权限(包访问) 可以 可以 不可以 不可以
基类和派生类之间的相互赋值:base= derieve (多态的基础) derieve = base 不可以
多态:基类引用了派生类对象,并且基类和派生类有同名的覆盖方法
重载overloade:函数名相同 参数列表不同 与函数返回值无关 并不一定在同一个类之中,继承关系上也可以构成重载
重写/覆盖overwrite:函数名相同 参数列表相同 函数返回值相同 可以遵守协变类型《java编程思想》查阅基类 process()方法返回类型为Object,而导出类覆盖了process()方法,将其返回类型改为String,程序仍可正常执行,这就是协变返回类型。简而言之,协变返回类型即允许导出类中重写了的成员方法返回基类中被重写方法更窄的类型。
动多态:方法表和类型一一对应 class对象在方法区放有RTTI机制run time type information行时derieve把地址赋给base 静多态:方法表在编译时生成
构造函数内能发生多态 特殊involespecial 普通involevirtal
继承和多态
最新推荐文章于 2024-04-02 00:00:00 发布