w3resource

TypeScript Class Inheritance

TypeScript Classes and OOP : Exercise-3 with Solution

Write a TypeScript class called SUV (Sports Utility Vehicle) that extends the Car class. Add a property to represent whether the SUV is suitable for off-road driving. Implement a method that toggles off-road capability and prints a message accordingly.

Sample Solution:

TypeScript Code:

// Define a base class 'Car'
class Car {
  // Properties
  make: string;
  model: string;
  year: number;

  // Constructor
  constructor(make: string, model: string, year: number) {
    this.make = make;
    this.model = model;
    this.year = year;
  }

  // Method to start the car
  start() {
    console.log(`The ${this.make} ${this.model} (Year: ${this.year}) is starting.`);
  }
}

// Define a derived class 'SUV' that extends 'Car'
class SUV extends Car {
  // Property to represent off-road capability
  offRoadCapable: boolean;

  // Constructor for SUV
  constructor(make: string, model: string, year: number, offRoadCapable: boolean) {
    // Call the base class constructor
    super(make, model, year);

    // Initialize the off-road capability property
    this.offRoadCapable = offRoadCapable;
  }

  // Method to toggle off-road capability and print a message
  toggleOffRoadMode() {
    if (this.offRoadCapable) {
      console.log(`The ${this.make} ${this.model} is now in off-road mode.`);
    } else {
      console.log(`The ${this.make} ${this.model} is not suitable for off-road driving.`);
    }
  }
}

// Create an SUV object
const mySUV = new SUV("Toyota", "Fortuner", 2023, true);

// Call the start method to start the SUV
mySUV.start();

// Toggle the off-road mode
mySUV.toggleOffRoadMode();

Explanations:

In the exercise above -

  • First, we define a base class "Car" with properties 'make', 'model', and 'year', along with a "start()" method that prints a starting message.
  • Define a derived class "SUV" that extends 'Car'. It includes an additional property offRoadCapable to represent whether the SUV is suitable for off-road driving.
  • The constructor for the "SUV" class takes parameters for 'make', 'model', 'year', and 'offRoadCapable'. It calls the base class constructor using super() to initialize the inherited properties.
  • Implement a "toggleOffRoadMode()" method in the "SUV" class that toggles the off-road capability and prints a message accordingly.
  • Finally, we create an instance of the "SUV" class called 'mySUV', call the "start()" method to start the SUV, and then toggle the off-road mode to demonstrate the off-road capability feature.

Output:

"The Toyota Fortuner (Year: 2023) is starting."
"The Toyota Fortuner is now in off-road mode."

TypeScript Editor:

See the Pen TypeScript by w3resource (@w3resource) on CodePen.


Previous: TypeScript Class with Methods.
Next: TypeScript Class Composition.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Follow us on Facebook and Twitter for latest update.