Bird
Raised Fist0
Typescriptprogramming~5 mins

Abstract classes in Typescript - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is an abstract class in TypeScript?
An abstract class is a class that cannot be instantiated directly. It is meant to be a base class for other classes and can contain abstract methods that must be implemented by subclasses.
Click to reveal answer
beginner
Can you create an object from an abstract class?
No, you cannot create an object directly from an abstract class. You must create an object from a subclass that extends the abstract class and implements its abstract methods.
Click to reveal answer
beginner
What is an abstract method?
An abstract method is a method declared in an abstract class without an implementation. Subclasses must provide their own implementation of this method.
Click to reveal answer
beginner
How do you declare an abstract class and an abstract method in TypeScript?
Use the keyword <code>abstract</code> before the class name to declare an abstract class. Use <code>abstract</code> before a method signature inside the class to declare an abstract method.
Click to reveal answer
intermediate
Why use abstract classes instead of interfaces in TypeScript?
Abstract classes can have both implemented methods and abstract methods, allowing shared code and enforced method implementation. Interfaces only declare method signatures without implementation.
Click to reveal answer
Which keyword is used to declare an abstract class in TypeScript?
Aabstract
Binterface
Cclass
Dimplements
Can you instantiate an abstract class directly?
AYes, always
BNo, never
COnly if it has no abstract methods
DOnly inside subclasses
What must a subclass do if it extends an abstract class with abstract methods?
AOverride only some abstract methods
BIgnore abstract methods
CImplement all abstract methods
DConvert abstract methods to properties
Which of these can an abstract class contain?
ABoth abstract and implemented methods
BOnly implemented methods
COnly properties
DOnly abstract methods
What happens if a subclass does not implement all abstract methods?
AIt automatically implements methods
BIt compiles without errors
CIt throws a runtime error
DIt becomes an abstract class itself
Explain what an abstract class is and why you would use it in TypeScript.
Think about a blueprint that cannot be built but guides other buildings.
You got /4 concepts.
    Describe the difference between an abstract class and an interface in TypeScript.
    One can have code inside, the other only rules.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is true about an abstract class in TypeScript?
      easy
      A. Abstract classes are the same as interfaces.
      B. Abstract classes cannot have any methods implemented.
      C. You cannot create an instance of an abstract class directly.
      D. You must use the new keyword to instantiate an abstract class.

      Solution

      1. Step 1: Understand abstract class instantiation rules

        Abstract classes cannot be instantiated directly, so you cannot create objects from them using new.
      2. Step 2: Compare other options

        Abstract classes can have implemented methods, are different from interfaces, and cannot be instantiated with new.
      3. Final Answer:

        You cannot create an instance of an abstract class directly. -> Option C
      4. Quick Check:

        Abstract class instantiation = not allowed [OK]
      Hint: Remember: abstract classes can't be directly instantiated [OK]
      Common Mistakes:
      • Thinking abstract classes are interfaces
      • Assuming abstract classes can't have implemented methods
      • Trying to instantiate abstract classes directly
      2. Which of the following is the correct syntax to declare an abstract class in TypeScript?
      easy
      A. abstract class Vehicle {}
      B. class abstract Vehicle {}
      C. abstract Vehicle class {}
      D. class Vehicle abstract {}

      Solution

      1. Step 1: Recall TypeScript abstract class syntax

        The correct syntax places the keyword abstract before class, followed by the class name.
      2. Step 2: Check each option

        Only abstract class Vehicle {} correctly uses abstract class Vehicle {}. Others have incorrect keyword order.
      3. Final Answer:

        abstract class Vehicle {} -> Option A
      4. Quick Check:

        Abstract class syntax = abstract class Name {} [OK]
      Hint: Put 'abstract' before 'class' keyword [OK]
      Common Mistakes:
      • Placing 'abstract' after 'class'
      • Mixing keyword order
      • Omitting 'abstract' keyword
      3. What will be the output of the following TypeScript code?
      abstract class Animal {
        abstract makeSound(): void;
        move(): void {
          console.log('Moving');
        }
      }
      
      class Dog extends Animal {
        makeSound(): void {
          console.log('Bark');
        }
      }
      
      const dog = new Dog();
      dog.makeSound();
      dog.move();
      medium
      A. Moving\nBark
      B. No output
      C. Error: Cannot create instance of abstract class
      D. Bark\nMoving

      Solution

      1. Step 1: Understand class inheritance and method calls

        The class Dog extends Animal and implements makeSound(). Calling dog.makeSound() prints 'Bark'.
      2. Step 2: Check the move() method call

        The move() method is implemented in Animal and prints 'Moving'. Calling dog.move() prints 'Moving'.
      3. Final Answer:

        Bark Moving -> Option D
      4. Quick Check:

        Subclass methods run, abstract class methods inherited [OK]
      Hint: Abstract methods must be implemented; inherited methods run normally [OK]
      Common Mistakes:
      • Thinking abstract class instance is created
      • Confusing method call order
      • Expecting errors on calling inherited methods
      4. Identify the error in the following TypeScript code:
      abstract class Shape {
        abstract area(): number;
      }
      
      class Circle extends Shape {
        radius: number;
        constructor(radius: number) {
          super();
          this.radius = radius;
        }
      }
      medium
      A. Circle must implement the abstract method area()
      B. Abstract class cannot have abstract methods
      C. radius property should be private
      D. Missing call to super() in Circle constructor

      Solution

      1. Step 1: Check abstract method implementation

        The abstract class Shape declares an abstract method area(). Any subclass must implement this method.
      2. Step 2: Verify Circle class methods

        The Circle class does not implement area(), so this causes a compile-time error.
      3. Final Answer:

        Circle must implement the abstract method area() -> Option A
      4. Quick Check:

        Abstract methods require subclass implementation [OK]
      Hint: All abstract methods must be implemented in subclasses [OK]
      Common Mistakes:
      • Forgetting to implement abstract methods
      • Thinking super() call is not mandatory when base has no constructor
      • Confusing abstract methods with optional methods
      5. Given the abstract class below, which implementation correctly uses it to calculate the area of a rectangle?
      abstract class Shape {
        abstract area(): number;
      }
      
      // Choose the correct Rectangle class implementation
      hard
      A. class Rectangle extends Shape { width: number; height: number; constructor(width: number, height: number) { this.width = width; this.height = height; } area(): number { return this.width + this.height; } }
      B. class Rectangle extends Shape { width: number; height: number; constructor(width: number, height: number) { super(); this.width = width; this.height = height; } area(): number { return this.width * this.height; } }
      C. class Rectangle extends Shape { width: number; height: number; constructor(width: number, height: number) { super(); this.width = width; this.height = height; } area(): number { return this.width + this.height; } }
      D. class Rectangle extends Shape { width: number; height: number; constructor(width: number, height: number) { super(); this.width = width; this.height = height; } }

      Solution

      1. Step 1: Check constructor and super() call

        Since Shape has no constructor, calling super() is required before using this in the subclass constructor.
      2. Step 2: Verify area() method correctness

        class Rectangle extends Shape { width: number; height: number; constructor(width: number, height: number) { super(); this.width = width; this.height = height; } area(): number { return this.width * this.height; } } correctly implements area() returning width * height, which is the rectangle's area.
      3. Step 3: Check other options for errors

        class Rectangle extends Shape { width: number; height: number; constructor(width: number, height: number) { this.width = width; this.height = height; } area(): number { return this.width + this.height; } } return width + height, which is incorrect for area. class Rectangle extends Shape { width: number; height: number; constructor(width: number, height: number) { super(); this.width = width; this.height = height; } } lacks area() implementation, causing error.
      4. Final Answer:

        class Rectangle extends Shape { width: number; height: number; constructor(width: number, height: number) { super(); this.width = width; this.height = height; } area(): number { return this.width * this.height; } } -> Option B
      5. Quick Check:

        Correct area method and constructor = class Rectangle extends Shape { width: number; height: number; constructor(width: number, height: number) { super(); this.width = width; this.height = height; } area(): number { return this.width * this.height; } } [OK]
      Hint: Area of rectangle = width * height; implement abstract method [OK]
      Common Mistakes:
      • Returning sum instead of product for area
      • Omitting abstract method implementation
      • Forgetting to assign constructor parameters
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard