class Animal
{
void makeNoise(){System.out.println("generic noise");}
}
class Dog extends Animal
{
void makeNoise() {System.out.println("bark");}
void playDead() {System.out.println( "roll over");}
}
class CastTest2
{
public static void main(
String [] args)
{
Animal [] a = {new Animal(), new Dog(), new Animal()};
for(Animal animal : a)
{
animal.makeNoise();
if(animal instanceof Dog)
animal.playDead();
}
}
}
When i compile this code compiler gives an error at animal.playDead()
This is probably because at compile time "animal instanceof Dog" is true
But what about runtime?
When i modified the code i posted above
if(animal instanceof Dog)
System.out.println(" animal is an instanceof Dog" );
output
-------
generic noise
bark
animal is an instanceof Dog
generic noise
But when "animal instanceof Dog" is true output should be
generic noise
animal is an instanceof Dog
bark
animal is an instanceof Dog
generic noise
animal is an instanceof Dog
I am confused.. please help
Thank you
--------------------