3 · Object-Oriented Core · lesson 17 of 41

Abstract Classes

Partial blueprints that can't be instantiated.

Java
abstract class Shape {
    abstract double area();          // subclass must implement
    void describe() {
        System.out.println("area = " + area());
    }
}

class Circle extends Shape {
    double r;
    Circle(double r) { this.r = r; }
    double area() { return Math.PI * r * r; }
}
Key takeaways
  • ✓Use abstract when subclasses share code AND state.
  • ✓You cannot new an abstract class directly.