Class

TypeScript 中,protectedpublicprivatereadonlyabstract 是面向对象编程(OOP)中的关键字,它们用于控制类中属性和方法的访问权限、不可变性以及类的抽象化。下面是详细解释和使用场景:

🎯 1. public(公开)

✅ 默认修饰符,属性/方法可以被任何地方访问

  • 默认值:如果不指定任何访问修饰符,TypeScript 会将其视为 public

  • 访问范围:可以在类内部、子类以及类外部访问。

📌 示例:

class Animal {
  public name: string; // 默认是 public
  constructor(name: string) {
    this.name = name;
  }

  public makeSound() {
    console.log(`${this.name} is making a sound.`);
  }
}

const dog = new Animal("Dog");
console.log(dog.name); // ✅ 可以在类外访问
dog.makeSound(); // ✅ 可以在类外访问

🎯 2. private(私有)

🚫 属性/方法只能在类内部访问,不能在类的外部或子类中访问

  • 无法通过实例或子类访问 private 属性或方法。

📌 示例:

🎯 3. protected(受保护)

🛡️ 属性/方法只能在类内部和子类中访问

  • 区别于 privateprotected 可以在子类中访问,但不能在类的外部访问。

📌 示例:

🎯 4. readonly(只读)

🔒 属性在初始化后不可修改

  • 可以在构造函数中赋值,但在之后不能修改。

  • 常用于表示常量或不可变值。

📌 示例:

🎯 5. abstract(抽象)

📚 用于创建抽象类和抽象方法

  • 抽象类不能被直接实例化,必须通过子类实现。

  • 抽象方法在抽象类中定义,但不包含具体实现,必须在子类中实现。

📌 示例:

🔥 总结表格

修饰符
访问权限
用途

public

类内、子类、类外部均可访问

默认访问修饰符

private

仅限类内部访问

用于隐藏实现细节

protected

类内部和子类可访问

用于类继承时的访问控制

readonly

初始化后不可修改

用于定义只读属性

abstract

必须由子类实现,不能实例化

用于抽象类和抽象方法

💡 最佳实践

  1. privateprotected 常用于隐藏内部实现细节,提供更好的封装性。

  2. readonly 用于表示属性的不可变性,提高代码的健壮性。

  3. abstract 用于设计抽象类和接口,提升代码的扩展性和维护性。

最后更新于

这有帮助吗?