Java Inheritance Types - Single, Multilevel, Hierarchical

1. Single Inheritance

Single inheritance me ek subclass sirf ek superclass se properties aur methods inherit karta hai. Yeh inheritance ka sabse simple form hai.

// Superclass
class Animal {
    void eat() {
        System.out.println("Animal is eating");
    }
}

// Subclass inherits from Animal
class Dog extends Animal {
    void bark() {
        System.out.println("Dog is barking");
    }
}

public class TestSingleInheritance {
    public static void main(String[] args) {
        Dog d = new Dog();
        d.eat();  // Inherited method
        d.bark(); // Subclass method
    }
}

2. Multilevel Inheritance

Multilevel inheritance me ek class doosri class se inherit karti hai, jo khud teesri class se inherit karti hai.

// Grandparent class
class Animal {
    void eat() {
        System.out.println("Animal is eating");
    }
}

// Parent class
class Dog extends Animal {
    void bark() {
        System.out.println("Dog is barking");
    }
}

// Child class
class Puppy extends Dog {
    void weep() {
        System.out.println("Puppy is weeping");
    }
}

public class TestMultilevelInheritance {
    public static void main(String[] args) {
        Puppy p = new Puppy();
        p.eat();  // From Animal
        p.bark(); // From Dog
        p.weep(); // From Puppy
    }
}

3. Hierarchical Inheritance

Hierarchical inheritance me multiple subclasses ek hi superclass se inherit karte hain.

// Superclass
class Animal {
    void eat() {
        System.out.println("Animal is eating");
    }
}

// Subclass 1
class Dog extends Animal {
    void bark() {
        System.out.println("Dog is barking");
    }
}

// Subclass 2
class Cat extends Animal {
    void meow() {
        System.out.println("Cat is meowing");
    }
}

public class TestHierarchicalInheritance {
    public static void main(String[] args) {
        Dog d = new Dog();
        d.eat();
        d.bark();

        Cat c = new Cat();
        c.eat();
        c.meow();
    }
}