????????TypeScript 是一种静态类型的编程语言,它在 JavaScript 的基础上增加了类型系统。其中,类和继承是面向对象编程中的重要概念。本文将深入介绍 TypeScript 中的类和继承,并通过示例代码帮助读者更好地理解这些概念。
????????在 TypeScript 中,可以使用?class?关键字来定义一个类。类可以包含属性和方法,并且可以通过实例化来创建对象。
class Animal {
name: string;
constructor(name: string) {
this.name = name;
}
sayHello() {
console.log(`Hello, I'm ${this.name}`);
}
}
const cat = new Animal("Tom");
cat.sayHello(); // 输出:Hello, I'm Tom
????????继承是面向对象编程中的重要特性,它允许我们创建一个新类,并从现有的类中派生出新的类。在 TypeScript 中,可以使用?extends?关键字来实现继承。
class Dog extends Animal {
breed: string;
constructor(name: string, breed: string) {
super(name);
this.breed = breed;
}
bark() {
console.log("Woof!");
}
}
const dog = new Dog("Bobby", "Labrador");
dog.sayHello(); // 输出:Hello, I'm Bobby
dog.bark(); // 输出:Woof!
????????子类可以重写父类中的方法,以适应自己的特定需求。在 TypeScript 中,使用?override?关键字来标记方法的重写。
class Cat extends Animal {
override sayHello() {
console.log("Meow!");
}
}
const cat = new Cat("Kitty");
cat.sayHello(); // 输出:Meow!
????????TypeScript 提供了三种访问修饰符:public、private?和?protected。它们用于控制类成员的可访问性。
class Person {
public name: string;
private age: number;
protected gender: string;
constructor(name: string, age: number, gender: string) {
this.name = name;
this.age = age;
this.gender = gender;
}
sayHello() {
console.log(`Hello, I'm ${this.name}`);
}
}
const person = new Person("Alice", 25, "female");
console.log(person.name); // 可以访问
console.log(person.age); // 错误:私有属性不能被访问
console.log(person.gender); // 错误:受保护属性不能被访问
person.sayHello(); // 输出:Hello, I'm Alice
????????抽象类是一种不能被实例化的类,它主要用于作为其他类的基类。在 TypeScript 中,可以使用?abstract?关键字来定义抽象类。
abstract class Shape {
abstract getArea(): number;
}
class Rectangle extends Shape {
constructor(private width: number, private height: number) {
super();
}
override getArea() {
return this.width * this.height;
}
}
const rectangle = new Rectangle(10, 5);
console.log(rectangle.getArea()); // 输出:50
????????在本文中,我们深入探讨了 TypeScript 中的类和继承。我们了解了如何定义类、继承现有类、重写方法以及使用访问修饰符和抽象类。这些概念是面向对象编程中的基础,掌握它们将使您能够更好地构建可维护和可扩展的应用程序。