TypeScript基础知识:类和继承

        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。它们用于控制类成员的可访问性。

  • 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 中的类和继承。我们了解了如何定义类、继承现有类、重写方法以及使用访问修饰符和抽象类。这些概念是面向对象编程中的基础,掌握它们将使您能够更好地构建可维护和可扩展的应用程序。

你可能感兴趣的:(Typescript基础教程,typescript,javascript,前端)