Могу ли я вызвать метод дочернего класса, используя родительский объект?

Я создал базовый класс животных и детский класс как кошка. В основном я хочу создать объект класса PARENT и вызвать метод дочернего класса. Так это возможно или нет? Я также использовал 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 ответа

Решение

Ваш код должен работать нормально. Условие if приведет к ложному, поэтому ваше животное не будет ходить ().

Animal animal = new Animal();

У этого животного будет все поведение Animal, то есть eat (), но ни одно из действий подкласса Cat, то есть walk().

Если вы хотите, чтобы у вашего животного было все поведение Animal, а также все поведения Cat, вам нужно создать экземпляр класса Cat.

Animal animal = new Cat();

Теперь твое животное будет есть и гулять.

Да, это будет. Вы меняете тип, так что он будет работать.

Другие вопросы по тегам