本帖最后由 钟伟杰 于 2013-4-18 15:01 编辑
abstract class Animal
{
abstract void eat();
}
class Cat extends Animal
{
public void eat()//覆盖父类的方法
{
System.out.println("吃鱼");
}
}
class Dog extends Animal
{
public void eat()//覆盖父类的方法
{
System.out.println("吃骨头");
}
}
class Demo
{
public static void main(String[] args)
{
function(new Cat());//父类引用接受子类对象
function(new Dog());//父类引用接受子类对象
}
public static void function(Animal a)//父类引用指向子类对象
{
a.eat();
}
}
关于上面多态的问题,主函数创建一个function()功能,通过父类引用指向子类对象,假如把Animal类的抽象eat()注释掉,
编译失败,也就是说多态的时候调用父类方法,但是子类继承了父类,不是应该调用子类的方法吗?求解? |