“多态”意味着“很多形式”
视频锁定
{$ currentTime | date:'mm:ss' $}
{$ timeLeft | date:'mm:ss' $}
如果引用是个遥控器,则当你在继承树往下走时,会发现遥控器的按钮越来越多。Object
的遥控器只有几个按钮而已,但Dog
的遥控器就会包含来自Object
和自己定义的按钮。越接近具体的类会有越多的按钮。
当然这也不是绝对的,子类也有可能不会加入任何新的方法,而只是覆盖过一些方法罢了,重点在于如果对象的类型是Dog
,而引用它的却是Object
,则它不能调用Dog
的方法。
转换回原来的类型
将Object类型转换成Dog,如此才能用Dog的方法操作。
object o = al.get(index);
Dog d = (Dog) o; //将类型转换成Dog
d.roam();
如果不能确定它是Dog
,你可以使用instanceof
这个运算符来检查。若是类型转换错了,你会在执行期遇到ClassCastException异常并且终止。
if (o instanceof Dog) {
Dog d = (Dog) o;
}
在线练习
{$ activeFileHint $}