Inheritance is one of the fundamental concepts of Object-Oriented Programming (OOP) in Java. It allows a new class (child or subclass) to inherit the properties and behaviors (fields and methods) of an existing class (parent or superclass). This promotes code reuse and establishes a natural hierarchical relationship between classes.
Types of Inheritance in Java
- Single Inheritance: A class inherits from one superclass.
- Multilevel Inheritance: A class inherits from another class, which in turn inherits from another class.
- Hierarchical Inheritance: Multiple classes inherit from one superclass.
Note: Java does not support multiple inheritance (a class inheriting from more than one class) directly to avoid complexity and ambiguity. However, it can be achieved using interfaces.
Examples of Inheritance
Single Inheritance
In single inheritance, a class inherits from one superclass.
// Parent class
class Vehicle {
String brand = "Ford";
void honk() {
System.out.println("Beep! Beep!");
}
}
// Child class
class Car extends Vehicle {
String model = "Mustang";
void display() {
System.out.println("Brand: " + brand + ", Model: " + model);
}
public static void main(String[] args) {
Car car = new Car();
car.honk(); // Output: Beep! Beep!
car.display(); // Output: Brand: Ford, Model: Mustang
}
}
Multilevel Inheritance
In multilevel inheritance, a class inherits from another class, which in turn inherits from another class.
Example:
// Base class
class Animal {
void eat() {
System.out.println("Eating...");
}
}
// Derived class
class Dog extends Animal {
void bark() {
System.out.println("Barking...");
}
}
// Further derived class
class Puppy extends Dog {
void weep() {
System.out.println("Weeping...");
}
public static void main(String[] args) {
Puppy puppy = new Puppy();
puppy.eat(); // Output: Eating...
puppy.bark(); // Output: Barking...
puppy.weep(); // Output: Weeping...
}
}
Hierarchical Inheritance
In hierarchical inheritance, multiple classes inherit from one superclass.
Example:
// Superclass
class Animal {
void eat() {
System.out.println("Eating...");
}
}
// Subclass 1
class Dog extends Animal {
void bark() {
System.out.println("Barking...");
}
}
// Subclass 2
class Cat extends Animal {
void meow() {
System.out.println("Meowing...");
}
public static void main(String[] args) {
Dog dog = new Dog();
Cat cat = new Cat();
dog.eat(); // Output: Eating...
dog.bark(); // Output: Barking...
cat.eat(); // Output: Eating...
cat.meow(); // Output: Meowing...
}
}
Method Overriding in Inheritance
Method overriding occurs when a subclass provides a specific implementation for a method already defined in its superclass. The subclass method should have the same name, return type, and parameters.
Example:
class Animal {
void sound() {
System.out.println("Animal makes a sound");
}
}
class Dog extends Animal {
@Override
void sound() {
System.out.println("Dog barks");
}
public static void main(String[] args) {
Animal animal = new Dog();
animal.sound(); // Output: Dog barks
}
}
The super
Keyword
The super
keyword in Java is used to refer to the immediate parent class object. It can be used to access parent class methods, constructors, and fields.
Example:
class Animal {
String color = "white";
void eat() {
System.out.println("Animal is eating");
}
}
class Dog extends Animal {
String color = "black";
void displayColor() {
System.out.println("Dog color: " + color); // Output: black
System.out.println("Animal color: " + super.color); // Output: white
}
@Override
void eat() {
super.eat(); // Calling parent class method
System.out.println("Dog is eating");
}
public static void main(String[] args) {
Dog dog = new Dog();
dog.displayColor();
dog.eat();
// Output:
// Animal is eating
// Dog is eating
}
}
Constructor Chaining
Constructor chaining refers to the process of calling one constructor from another constructor using the this()
or super()
keywords.
Example:
class Animal {
Animal() {
System.out.println("Animal is created");
}
}
class Dog extends Animal {
Dog() {
super(); // Calls the parent class constructor
System.out.println("Dog is created");
}
public static void main(String[] args) {
Dog dog = new Dog();
// Output:
// Animal is created
// Dog is created
}
}
Comments
Post a Comment