方法重写

1 子类方法的名称需要与父类方法的名称一直

2 子类方法的返回方法必须是父类方法返回类型的可替换类型

可替换类型:1)当放回类型是基本数据类型或是void时,子类与父类的返回类型要求一致。2) 当返回类型是引用类型时,子类可以与父类的返回类型一致,或者是父类的子类型。

参数列表

3子类方法的参数列表需要与父类方法的参数列表类型相同,或者与父类参数列表擦出后的类型相同。

4 访问权限

子类方法的访问权限不能低于父类方法的访问权限

5异常列表

子类方法不能比父类方法抛出更多的受检异常。

成员变量的隐藏

在子类中声明与父类同名的成员变量,就称子类隐藏了父类的成员变量。

只要保证与父类的变量名相同即可,类型可以保证不一致。

引用类型之间的转换

自动转换:子类向父类的转换

强制转换:父类转换成子类

 

父类的引用可以指向子类的对象,即子类的引用可以赋值给父类的引用。(子类是一种特殊的父类,所有的子类都是特殊的父类)

子类的引用是不可以指向父类的对象,即父类对象不能直接赋值给子类的引用。

我们可以将父类引用强制转换成子类的类型,前提是父类的引用指向了子类的对象,否则,编译时没有错误,但是运行时会出现“ClassCastException”

只有存在继承关系的两个类型之间才能转换,否则会产生编译错误。(引用类型的转换只能发生在父类型与子类型之间。而不能发生在不想管的类型之间)

通过父类的引用不能刚问子类新增的成员。即使父类的引用指向的就是子类的对象。如果想要访问子类成员就要进行类型转换,转换成子类的类型。

instanceof 运算符

判断左侧操作类型(对象的类型)是否是右侧操作数的类型,或者是否是右侧操作数的子类型。是,返回TRUE  不是返回false。

instanceof 最常使用的场景

如果 A instanceOf B 的值为true,我们就可以放心的将A 转换成B 的类型

B b = (B) A

这样,就不会在运行时产生ClassCastExcetion

posted @ 2017-02-23 14:54  奇诺-lx  阅读(96)  评论(0)    收藏  举报