Classes and Object-Oriented TypeScriptLesson 5.2
Abstract classes and inheritance in TypeScript
abstract class, abstract method, extends for classes, super keyword, method overriding, when to use abstract vs interface
Abstract classes
An abstract class cannot be instantiated directly. It defines structure that subclasses must implement:
abstract class Shape {
abstract area(): number;
abstract perimeter(): number;
describe(): string {
return `Area: ${this.area()}, Perimeter: ${this.perimeter()}`;
}
}
class Circle extends Shape {
constructor(private radius: number) { super(); }
area() { return Math.PI * this.radius ** 2; }
perimeter() { return 2 * Math.PI * this.radius; }
}
const c = new Circle(5);
console.log(c.describe()); // uses base class method
const s = new Shape(); // Error: cannot create abstract classabstract vs interface
Use abstract classes when you want to share implementation across subclasses alongside the contract. Use interfaces when you only want to define a contract with no shared implementation. Abstract classes also support constructor logic and access modifiers, which interfaces cannot.
