前言:
类的方法和属性可以通过修饰符来 限制访问
修饰符包括: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()