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(),所以错误.