Back
Syntax
Study
Editor
Mode:
HTML
CSS
JavaScript
PHP
Reset
Run »
HTML / CSS / JS
// 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"); } } } }
Result
Open