日期:2014-05-20  浏览次数:20768 次

Object类与多态的疑问
假如Animal是Dog的父类
Animal animal=new Dog();
animal.eat();//多态,调用的是Dog的eat()


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

Object类此时为什么不能像Animal一样多态?直观上理解不了,硬记?
有谁解释下他们的区别吗?

------解决方案--------------------
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()方法
然后试试可不可行,就知道了
------解决方案--------------------
多态的三个条件:
1.有继承,extends..
2.有重写,子类要重写父类的方法..
3.要有父类引用指向子类对象..


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