Java Interface and Abstract Classes - Detailed Guide

What is an Interface?

Interface ek blueprint hai jisme methods ke signatures declare kiye jaate hain bina unka implementation diye. Classes interfaces ko implement karti hain aur unke methods ko define karti hain.

Interface ke kuch khas points:

Interface Example:

interface Drawable {
    void draw();
}

class Circle implements Drawable {
    public void draw() {
        System.out.println("Drawing Circle");
    }
}

class Rectangle implements Drawable {
    public void draw() {
        System.out.println("Drawing Rectangle");
    }
}

public class TestInterface {
    public static void main(String[] args) {
        Drawable d = new Circle();
        d.draw();
        d = new Rectangle();
        d.draw();
    }
}

What is an Abstract Class?

Abstract class ek aisi class hai jo apne aap me pura definition/implementation nahi deti, balki dusri classes ke liye template ka kaam karti hai. Isme abstract aur concrete dono methods ho sakte hain.

Abstract class ke kuch points:

Abstract Class Example:

abstract class Animal {
    abstract void sound();
    
    void breathe() {
        System.out.println("Animal is breathing");
    }
}

class Dog extends Animal {
    void sound() {
        System.out.println("Dog barks");
    }
}

public class TestAbstractClass {
    public static void main(String[] args) {
        Animal a = new Dog();
        a.sound();
        a.breathe();
    }
}

Key Differences Between Interface and Abstract Class

Feature Interface Abstract Class
Methods Only abstract (except default/static methods in Java 8+) Abstract and concrete methods
Variables public static final (constants only) Instance variables allowed
Inheritance A class can implement multiple interfaces A class can extend only one abstract class
Constructor No constructor Can have constructors
Use case To define a contract for classes To provide base functionality and common code