Object类与多态的疑问

boxnoodle 2007-12-14 10:34:11
假如Animal是Dog的父类
Animal animal=new Dog();
animal.eat();//多态,调用的是Dog的eat()


Object o=new Dog();
o.eat();//错误,object类没有eat方法

Object类此时为什么不能像Animal一样多态?直观上理解不了,硬记?
有谁解释下他们的区别吗?
...全文
197 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
guoyueshan 2007-12-20
  • 打赏
  • 举报
回复
Object o=new Dog();
((Dog)o).eat();

Object o=new Dog();
Dog d=(Dog)o;//错误?为什么不能直接赋给他?
boxnoodle 2007-12-20
  • 打赏
  • 举报
回复
Object o=new Dog();
Dog d=o;//错误?为什么不能直接赋给他?
yakubeni 2007-12-20
  • 打赏
  • 举报
回复
没看清楚,瞎写了一下。哈哈。不好意思
yakubeni 2007-12-20
  • 打赏
  • 举报
回复
可以把子类强制转化成父类,但反过来不行。
编译器会认为缺少信息,尽管实际上不缺少。。。。
xiyuan1999 2007-12-15
  • 打赏
  • 举报
回复
object类没有eat方法
yjkun 2007-12-15
  • 打赏
  • 举报
回复
继承,重写,父类引用指向子类对象是多态的三个要素,object中没有eat()方法
wann916 2007-12-14
  • 打赏
  • 举报
回复
多态的三个条件:
1.有继承,extends..
2.有重写,子类要重写父类的方法..
3.要有父类引用指向子类对象..


你上面的例子中Animal类中肯定有eat()吧;Object类根本就没有eat(),Dog类中的eat()就不能重写Object类的eat(),所以错误.

JhunHoonXZ 2007-12-14
  • 打赏
  • 举报
回复
Animal animal=new Dog();
animal.eat();//多态,调用的是Dog的eat()
首先,Animal必须有eat()
然后Dog覆盖Animal的eat()
这样,你才可以如上面调用eat()


Object o=new Dog();
o.eat();//错误,object类没有eat方法
Object并没有eat()
所以错误

你可以试一下在Dog里写一个toString()或者equlas()方法
然后试试可不可行,就知道了
zazxzx 2007-12-14
  • 打赏
  • 举报
回复
Object类没有eat()方法,而Animal类中有eat()方法

多态满足的条件简单的说就是
继承,重写方法,上溯造型

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧