属性的封装
typescript 中属性值 有三种修饰符。
- public 默认的修饰符, 表示在任意位置,都可以访问和修改
- private 私有属性, 只能在类的内部访问和修改。
- protected 受保护的属性,在子类和本身类中能访问修改
第一个默认的修饰符,很容易理解了。现在来具体说下第二个和第三个
private 私有属性
私有属性,只能在类的内部访问和使用。
class Person {
private name: string
constructor(name:string) {
this.name = name
}
}
let per = new Person('cg')
console.log(per.name) // 在这里是不能直接访问name 属性的
可以添加内部方法来满足访问和修改私有属性
class Person {
private name: string
constructor(name:string) {
this.name = name
}
setName(val:string) {
this.name = val
}
getName() {
return this.name
}
}
let per = new Person('cg')
per.setName('hxw')
console.log(per.getName()) // 通过内部函数的形式,来访问 和 修改 私有实属性
在typescript 中可以通过设置 getter setter 的方式来访问和修改私有属性
class Person {
private _name: string
constructor(name:string) {
this._name = name
}
get name() {
return this._name
}
set name(val:string) {
this._name = val
}
}
let per = new Person('cg')
per.name = 'hxw'
console.log(per.name)
私有属性在子类中也不能直接用
class Person {
private _name: string
constructor(name:string) {
this._name = name
}
// get name() {
// return this._name
// }
// set name(val:string) {
// this._name = val
// }
}
class Usa extends Person {
myname(){
return this.name
}
}
// 将上面的get 和 set 注释掉 下面的子类中也不能直接使用
protected 受保护的
在子类和本身类中能直接访问和修改