Java inheritance and method overriding
extends establishes a superclass relationship. An overriding instance method replaces inherited behavior for that object's runtime type.
Java
class Animal {
String speak() { return "sound"; }
}
class Dog extends Animal {
@Override String speak() { return "woof"; }
}
class Cat extends Animal {
@Override String speak() { return "meow"; }
}
class Main {
public static void main(String[] args) {
Animal[] animals = {new Dog(), new Cat()};
for (Animal animal : animals) {
System.out.println(animal.speak());
}
}
}