The 'extends' keyword in TypeScript is used to create a new class that is a modified version of an existing class. This concept is known as inheritance. The new class, also known as the subclass or derived class, inherits all the properties and methods of the existing class, also known as the superclass or base class.
Basic Syntax
The basic syntax for using the 'extends' keyword in TypeScript is as follows:
class BaseClass {
// properties and methods
}
class DerivedClass extends BaseClass {
// properties and methods
}
Example
Let's consider an example of a simple vehicle class and a car class that extends the vehicle class:
class Vehicle {
private brand: string;
private model: string;
private year: number;
constructor(brand: string, model: string, year: number) {
this.brand = brand;
this.model = model;
this.year = year;
}
public displayDetails(): void {
console.log(`Brand: ${this.brand}, Model: ${this.model}, Year: ${this.year}`);
}
}
class Car extends Vehicle {
private numberOfDoors: number;
constructor(brand: string, model: string, year: number, numberOfDoors: number) {
super(brand, model, year);
this.numberOfDoors = numberOfDoors;
}
public displayCarDetails(): void {
this.displayDetails();
console.log(`Number of Doors: ${this.numberOfDoors}`);
}
}
In this example, the 'Car' class extends the 'Vehicle' class using the 'extends' keyword. The 'Car' class has access to all the properties and methods of the 'Vehicle' class and can also add new properties and methods or override the ones inherited from the 'Vehicle' class.
Using the 'super' Keyword
The 'super' keyword is used to call the constructor of the superclass from the subclass. It is used to initialize the properties of the superclass.
class Car extends Vehicle {
private numberOfDoors: number;
constructor(brand: string, model: string, year: number, numberOfDoors: number) {
super(brand, model, year); // calls the constructor of the Vehicle class
this.numberOfDoors = numberOfDoors;
}
}
Overriding Methods
A subclass can override a method of its superclass by providing a different implementation of the method. The method in the subclass must have the same name, return type, and parameter list as the method in the superclass.
class Vehicle {
public displayDetails(): void {
console.log(`Brand: ${this.brand}, Model: ${this.model}, Year: ${this.year}`);
}
}
class Car extends Vehicle {
public displayDetails(): void {
console.log(`This is a car`);
}
}
Access Modifiers
Access modifiers are used to control access to the properties and methods of a class. The 'public' access modifier makes a property or method accessible from anywhere, the 'private' access modifier makes a property or method accessible only within the same class, and the 'protected' access modifier makes a property or method accessible within the same class and its subclasses.
class Vehicle {
protected brand: string;
private model: string;
private year: number;
constructor(brand: string, model: string, year: number) {
this.brand = brand;
this.model = model;
this.year = year;
}
public displayDetails(): void {
console.log(`Brand: ${this.brand}, Model: ${this.model}, Year: ${this.year}`);
}
}
class Car extends Vehicle {
constructor(brand: string, model: string, year: number) {
super(brand, model, year);
console.log(this.brand); // accessible
console.log(this.model); // not accessible
}
}
FAQs
- What is the purpose of the 'extends' keyword in TypeScript?
- The 'extends' keyword is used to create a new class that is a modified version of an existing class.
- What is the difference between the 'super' keyword and the 'extends' keyword?
- The 'super' keyword is used to call the constructor of the superclass from the subclass, while the 'extends' keyword is used to create a new class that is a modified version of an existing class.
- Can a subclass override a method of its superclass?
- Yes, a subclass can override a method of its superclass by providing a different implementation of the method.
- What is the purpose of access modifiers in TypeScript?
- Access modifiers are used to control access to the properties and methods of a class.
- What is the difference between the 'public', 'private', and 'protected' access modifiers?
- The 'public' access modifier makes a property or method accessible from anywhere, the 'private' access modifier makes a property or method accessible only within the same class, and the 'protected' access modifier makes a property or method accessible within the same class and its subclasses.
Comments
Post a Comment