public class Animal {
public String sound() { return "generic"; }
}
public class Dog extends Animal {
public String sound() { return "Woof"; }
}
Animal a = new Dog();
System.out.println(a.sound());What is printed?
- Acheck_circle
Woof
- B
generic
- C
Compile-time error
- D
Runtime error
Explanation
Java uses dynamic dispatch: even though <code>a</code> is declared as <code>Animal</code>, the actual object is a <code>Dog</code>, so <code>Dog.sound()</code> is invoked at runtime.