老师你说watchDoor不能那样用,那你把怎么用写出来啊
watchDoor()是子类Dog的方法。父类里面没有。所以在创建dog对象的时候(Animal dog = new Dog();)dog.watchDoor()是首先要去父类找这个watchDoor()方法,但是父类里面没有该方法,所以报错。但是如果你把dog.watchDoor();改成 ((Dog)dog).watchDoor();之后就不会报错、((Dog)dog)是强制(向下)转换(转型)。估计我说了你也理解不到。 我是看的其他视频学的
Dog dog = (Dog)obj2; //将父类引用强制转换成子类
dog.watchDoor(); // 可以执行子类独有的方法
不能用是因为父类中没有watchdoor方法,如果在父类中实例化watchdoor方法,就可以调用了。
老师举的watchDoor例子是为了说父类中没有,而子类中有的方法,在调用的时候不能够用引用多态的形式调用,如果想要调用watchDoor需要先实例化Dog类,然后再进行调用~
watchDoor描述的是狗具有看门的属性,老师说的是方法不能这样使用,无关属性什么事,你把问题描述清楚一些。