Java Inheritance

Java Inheritance (Subclasses and Superclasses)

In Java, it is possible to inherit attributes and methods from one class to another. This is one of the core principles of Object-Oriented Programming.

We group the "inheritance concept" into two categories:

To inherit from a class, use the extends keyword.


Why Use Inheritance?


Inheritance Example

In the example below, the Car class (subclass) inherits the attributes and methods from the Vehicle class (superclass).

Inheritance Example

class Vehicle {
  protected String brand = "Ford"; // Vehicle attribute
  public void honk() {             // Vehicle method
    System.out.println("Tuut, tuut!");
  }
}

class Car extends Vehicle { private String modelName = "Mustang"; // Car attribute

public static void main(String[] args) { // Create a myCar object Car myCar = new Car(); // Call the honk() method (from the Vehicle class) on the myCar object myCar.honk(); // Display the value of the brand attribute (from the Vehicle class) // and the value of the modelName from the Car class System.out.println(myCar.brand + " " + myCar.modelName); } }

Did you notice the protected modifier in Vehicle?

We set the brand attribute in Vehicle to a protected access modifier. If it were set to private, the Car class would not be able to access it. The protected modifier makes the attribute visible to the subclass.


The final Keyword

If you don't want other classes to inherit from a class, use the final keyword. A final class cannot be extended.

final class Vehicle {
  // ...
}

// class Car extends Vehicle { } // This would cause a compilation error