An abstract class in Java is meant to provide a template or incomplete blueprint for other classes. It can contain abstract methods (methods without a body) that must be implemented by subclasses.
🧠 Core Reason:
Abstract classes are incomplete by design. Since they may contain unimplemented (abstract) methods, Java does not allow you to create an object from something that isn’t fully defined.
🔧 Analogy for Understanding
Imagine an abstract class is like a blueprint for a car—it describes what a car should have (like a steering wheel or engine), but you can’t drive a blueprint. You need a real, concrete car built from that blueprint to actually use it.
📦 Code Example
abstract class Shape {
abstract void draw(); // No body = must be overridden
}
// Cannot do this:
// Shape s = new Shape(); ❌ Compile-time error
class Circle extends Shape {
void draw() {
System.out.println("Drawing a circle");
}
}
// But you can do this:
Shape s = new Circle(); // ✅ Allowed (polymorphism)
s.draw(); // Output: Drawing a circle
🧑💼 Interview-Ready Takeaways
Concept | Description |
---|---|
Abstract class | May contain abstract and concrete methods |
Cannot instantiate directly | Because abstract methods may have no implementation |
Purpose | To be subclassed and provide common behavior or contracts |
Real object from subclass | You must instantiate a concrete subclass |
💬 Common Interview Question:
“If an abstract class has all implemented methods, can we instantiate it?”
Answer: No, if a class is declared abstract
, it cannot be instantiated—even if it has no abstract methods.