我可以使用父对象调用子类方法吗?

时间:2017-03-09 10:31:17

标签: java inheritance instanceof downcast

我已经创建了基类动物和儿童类作为猫。 在main中,我想创建PARENT类的obj并调用子类的方法。 那么,有可能吗? 我还使用instanceOf来检查关系

public class Animal
{
public void eats()
{
    System.out.println("Animal Eats");
}
}



public class Cat extends Animal
{
    public void walks()
    {
        System.out.println("Cat Walks");
    }

}



public class AnimalMain 
{
public static void main(String args[])
{
Animal a=new Animal();
display(a);
}   
public static void display(Animal a)
{
    a.eats();
    if(a instanceof Cat)
    ((Cat)a).walks();  
}
}

2 个答案:

答案 0 :(得分:3)

您的代码应该可以正常运行。 if条件会导致false,所以你的动物不会走路()。

Animal animal = new Animal();

这种动物将具有Animal的所有行为,即eat(),但没有子类Cat的行为,即walk()。

如果您希望您的动物拥有动物的所有行为以及Cat的所有行为,您需要实例化Cat类。

Animal animal = new Cat();

现在你的动物会吃饭走路。

答案 1 :(得分:0)

是的,它会的。您正在更改类型,因此它将起作用。

相关问题