课程
/后端开发
/Java
/Java入门第二季 升级版
老师你说watchDoor不能那样用,那你把怎么用写出来啊
2017-11-16
源自:Java入门第二季 升级版 10-1
正在回答
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描述的是狗具有看门的属性,老师说的是方法不能这样使用,无关属性什么事,你把问题描述清楚一些。
举报
课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙
2 回答为什么WatchDoor是obj2
1 回答java方法内部类该怎样调用
1 回答没有重写时,toSting()方法是怎样调用的?
2 回答怎样有经验
3 回答怎样选择使用一般方法或构造方法