Java
Beginner
1 min read
Extending Classes and the super Keyword
Example
// Superclass
class Animal {
private final String name;
private final int age;
Animal(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() { return name; }
public int getAge() { return age; }
public String speak() { return "..."; }
public void introduce() {
System.out.printf("I am %s, age %d. I say: %s%n", name, age, speak());
}
}
// Subclass
class Dog extends Animal {
private final String breed;
Dog(String name, int age, String breed) {
super(name, age); // must be first statement
this.breed = breed;
}
@Override
public String speak() { return "Woof!"; }
@Override
public void introduce() {
super.introduce(); // reuse parent logic
System.out.println(" Breed: " + breed);
}
}
class Cat extends Animal {
private boolean indoor;
Cat(String name, int age, boolean indoor) {
super(name, age);
this.indoor = indoor;
}
@Override public String speak() { return indoor ? "Meow~" : "MEOW!"; }
}
public class InheritanceDemo {
public static void main(String[] args) {
Animal[] animals = {
new Dog("Rex", 3, "German Shepherd"),
new Cat("Misty", 5, true),
new Cat("Tiger", 2, false)
};
for (Animal a : animals) {
a.introduce();
}
// instanceof check before downcast
for (Animal a : animals) {
if (a instanceof Dog d) { // pattern variable (Java 16+)
System.out.println(d.getName() + " is a dog");
}
}
}
}