1 子类方法的名称需要与父类方法的名称一直
2 子类方法的返回方法必须是父类方法返回类型的可替换类型
可替换类型:1)当放回类型是基本数据类型或是void时,子类与父类的返回类型要求一致。2) 当返回类型是引用类型时,子类可以与父类的返回类型一致,或者是父类的子类型。
参数列表
3子类方法的参数列表需要与父类方法的参数列表类型相同,或者与父类参数列表擦出后的类型相同。
4 访问权限
子类方法的访问权限不能低于父类方法的访问权限
5异常列表
子类方法不能比父类方法抛出更多的受检异常。
成员变量的隐藏
在子类中声明与父类同名的成员变量,就称子类隐藏了父类的成员变量。
只要保证与父类的变量名相同即可,类型可以保证不一致。
引用类型之间的转换
自动转换:子类向父类的转换
强制转换:父类转换成子类
父类的引用可以指向子类的对象,即子类的引用可以赋值给父类的引用。(子类是一种特殊的父类,所有的子类都是特殊的父类)
子类的引用是不可以指向父类的对象,即父类对象不能直接赋值给子类的引用。
我们可以将父类引用强制转换成子类的类型,前提是父类的引用指向了子类的对象,否则,编译时没有错误,但是运行时会出现“ClassCastException”
只有存在继承关系的两个类型之间才能转换,否则会产生编译错误。(引用类型的转换只能发生在父类型与子类型之间。而不能发生在不想管的类型之间)
通过父类的引用不能刚问子类新增的成员。即使父类的引用指向的就是子类的对象。如果想要访问子类成员就要进行类型转换,转换成子类的类型。
instanceof 运算符
判断左侧操作类型(对象的类型)是否是右侧操作数的类型,或者是否是右侧操作数的子类型。是,返回TRUE 不是返回false。
instanceof 最常使用的场景
如果 A instanceOf B 的值为true,我们就可以放心的将A 转换成B 的类型
B b = (B) A
这样,就不会在运行时产生ClassCastExcetion