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 ke methods by default abstract aur public hote hain.
- Interface me variables by default public, static, aur final hote hain.
- Ek class multiple interfaces implement kar sakti hai.
- Java 8 se interfaces me default aur static methods bhi ho sakte hain.
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 me abstract methods declare hote hain jinhe subclasses override karti hain.
- Abstract class me normal methods bhi ho sakte hain.
- Abstract class constructors, member variables, static methods bhi rakh sakti hai.
- Ek class sirf ek hi abstract class extend kar sakti hai.
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 |