TS中public、private和protected详解

当在 TypeScript 中定义类的属性和方法时,可以使用访问修饰符来控制它们的可访问性。这些访问修饰符包括 publicprivateprotected。在本文中,我们将详细介绍这些访问修饰符的概念和用法。

1. public 访问修饰符

public 是默认的访问修饰符,如果没有显式指定访问修饰符,默认为 public。使用 public 访问修饰符标记的属性和方法可以在类的内部和外部被访问。

class Example {
    
    
  public name: string;
  public age: number;

  public greet() {
    
    
    console.log('Hello!');
  }
}

const obj = new Example();
obj.name = 'John';
obj.age = 25;
console.log(obj.name); // 输出: John
console.log(obj.age); // 输出: 25
obj.greet(); // 输出: Hello!

2. private 访问修饰符

private 访问修饰符将属性或方法标记为私有,表示它们只能在类的内部被访问,外部无法直接访问。私有成员通常用于封装一些内部实现细节,不希望外部直接访问。

class Example {
    
    
  private secret: string;

  private revealSecret() {
    
    
    console.log(this.secret);
  }

  public accessSecret() {
    
    
    this.secret = 'This is a secret.';
    this.revealSecret();
  }
}

const obj = new Example();
obj.accessSecret(); // 输出: This is a secret.
console.log(obj.secret); // 错误: 属性“secret”为私有属性,无法在类“Example”外部访问
obj.revealSecret(); // 错误: 方法“revealSecret”为私有方法,无法在类“Example”外部访问

通过使用 private 访问修饰符,可以控制类的成员的可访问性,提供了封装和信息隐藏的机制。

3. protected 访问修饰符

protected 访问修饰符将属性或方法标记为受保护的,表示它们在类的内部和子类中可以被访问,但在类的外部是不可访问的。

class Parent {
    
    
  protected familyName: string;
}

class Child extends Parent {
    
    
  public greet() {
    
    
    this.familyName = 'Smith'; // 可以在子类访问被保护的成员
    console.log(`Hello, ${
      
      this.familyName} family!`);
  }
}

const child = new Child();
child.greet(); // 输出: Hello, Smith family!

使用 protected 访问修饰符可以使得父类的成员在子类中可见和可继承,但对于类的外部来说是不可访问的。

总结

  • public 访问修饰符允许在类的内部和外部访问属性和方法。
  • private 访问修饰符将属性和方法限制为只能在类的内部访问。
  • protected 访问修饰符允许在类的内部和子类中访问属性和方法,但对于类的外部来说是不可访问的。

使用这些访问修饰符可以有效地控制类成员的可访问性,提供了封装、信息隐藏和继承等面向对象编程的特性。

猜你喜欢

转载自blog.csdn.net/weixin_53156345/article/details/133681842