class P {
name: string; // 不写等于写了public
public sayHi() {
console.log('hi')
}
}
const p = new P();
p.name = 'zwx';
console.log(p.name); // zwx
p.sayHi(); // hi
// public 允许在类的内外调用
class P {
private name: string; // 只允许类内被调用
public sayHi() {
console.log('hi')
}
}
const p = new P();
p.name = 'zwx'; // Property 'name' is private and only accessible within class 'P'.
class P {
protected name: string; // 允许在类内以及继承的子类中使用
public sayHi() {
console.log('hi')
}
}
class T extends P {
public sayBay() {
this.name = 'pw'; // 子类中可以使用
console.log()
}
}
constructor
class P {
name: string;
constructor(name: string) {
this.name = name;
}
}
const p = new P('zwx');
p.name // zwx
/*************************************/
class P {
constructor(public name: string) {
this.name = name;
}
}
const p = new P('zwx');
p.name // zwx
// 在TS中,下面的简化写法等同于上面的常规写法
class P {
constructor(public name: string){}
}
class T extends P {
constructor(public name: string, public age: number) {
super(name)
}
}
// 子类如果有 constructor ,不管父类有没有,子类都需要调用以下 super
class P {
// constructor(public name: string){}
}
class T extends P {
constructor(public name: string, public age: number) {
super() // 必须要调用空的super
}
}