目录
一、public公共修饰符
在ts中,成员都默认用public,这表示我们可以自由的访问类中的成员
class getGTong {
public name: string;
public constructor(name: any) {
this.name = name;
}
public getName() {
console.log(this.name);
}
}
二、private私有修饰符
1.当成员被标记为私有时,它就不能在类的外部被访问。也不能被子类所访问
//声明一个类
class getGTong {
private name: string;
public constructor(name: any) {
this.name = name;
}
public getName() {
console.log(this.name);
}
}
let tong = new getGTong('hahah');
//不能私有成员不能被子类访问
class getGTong {
private name: string;
constructor(name: any) {
this.name = name;
}
}
class Child extends getGTong {
constructor() {
super('heihei');
}
}
let tong = new getGTong('hahah');
let child = new Child();
console.log(child.name);//报错 属性“name”为私有属性,只能在类“getGTong”中访问。
2.当private标记的成员来自同一出处的时候,则可以兼容,如果为不同出处则不行
class getGTong {
name: string;
constructor(name: any) {
this.name = name;
}
}
class Child extends getGTong {
constructor() {
super('heihei');
}
}
class Other {
private name: string;
constructor(name: any) {
this.name = name;
}
}
let tong = new getGTong('hahah');
let child = new Child();
let other = new Other('hhhh');
tong = child;
tong = other; //报错 不能将类型“Other”分配给类型“getGTong”。 属性“name”在类型“Other”中是私有属性,但在类型“getGTong”中不是。
三、protected受保护的修饰符
protected和private作用相似,在类的外部仍然不能访问基类的私有成员,但在派生类中可以访问基类的私有成员。
//声明一个类
class getGTong {
protected name: string;
constructor(name: any) {
this.name = name;
}
}
class Child extends getGTong {
constructor() {
super('heihei');
console.log(this.name); //可以访问基类受保护的成员
}
}
let tong = new getGTong('hahah');
let child = new Child();
console.log(child.name); //报错 属性“name”受保护,只能在类“getGTong”及其子类中访问。