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 访问修饰符允许在类的内部和子类中访问属性和方法,但对于类的外部来说是不可访问的。

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

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值