简单搞懂鸿蒙类的修饰符(private、protected、readonly)

179 阅读1分钟

前言:

类的方法和属性可以通过修饰符来 限制访问

修饰符包括:readonly、private、protected和public。省略不写默认为 public

readonly(只读)

readonly 的意思是只读,可以用来修饰属性(字段),修饰之后外部只可以取值,无法修改

  readonly 属性:类型
}

private(私有)

private修饰的成员不能在声明该成员的类之外访问,包括子类

  // private 设置的时候不嫩省略
  private name: string = ''
  private age: number = 0

  public sayHi() {
    // 内部可以访问
    console.log(`你好,我叫:${this.name}`)
  }
}
class Student extends Person{
  public sayHello() {
    // 内部可以访问
    console.log(`你好,我叫:${super.name}`) // 无法访问 报错
  }
}

const p = new Person()
// p.name // 无法访问 报错
p.sayHi()

protected(受保护)

protected修饰符的作用与private修饰符非常相似,不同点是protected修饰的成员允许在派生类(子类)中访问

class Person {
  protected  name: string = ''
  private age:number=18
  sayHi():void{
    console.log(this.name)
    console.log(this.age+'')
  }
}

class Student extends Person{

  sayHello(){
    console.log(this.name) // 可以访问
    console.log(this.age+'') // 无法访问 报错
  }
}

public(公共)

public修饰的类成员(字段、方法、构造函数)在程序的任何可访问该类的地方都是可见的。

  public name: string = ''
  // 省略 等同于使用 public
  age: number = 0

  public sayHi(){
    console.log(`你好,我叫:${this.name}`)
  }
}

// public 公有
const p = new Person()

// 使用 public 修饰的字段和方法,通过对象直接可以访问
p.name
p.age
p.sayHi()