construct
构造函数
class People {
name: string
constructor(name: string) {
// this表示当前对象
this.name = name
}
getName() {
console.log(this.name)
}
}
let p: People = new People("枫枫")
console.log(p.name) // 访问属性
p.getName() // 调用方法
public private protected
- **public:**类的所有成员都可以被类的实例获取。 不写默认就是public
- **private:**类成员只能在当前类中被访问。
- **protected:**类成员在类以及子类中可以被访问
class Man {
private mName: string
protected mAge: number
constructor(name: string, age: number) {
this.mName = name
this.mAge = age
}
getMName(){
console.log(this.mName) // private 只能在当前类中访问
}
}
class People extends Man {
name: string
private age: number
constructor(name: string, age: number = 18) {
super(name, age) // 调用父类的构造方法
this.name = name
this.age = age
}
getName() {
console.log(this.mAge) // protected 类的子类可以访问
console.log(this.name)
}
}
let p: People = new People("枫枫")
console.log(p.name)
console.log(p.age) // 不能在外面访问
static
只能通过类去调用
class People {
static ClassName:string = "类名"
nickName: string
constructor(nickName: string) {
this.nickName = nickName
}
static getName() {
console.log(People.ClassName)
}
}
let p: People = new People("枫枫")
People.getName()
注意
public和上面三个关键字可以连用
static作用于属性上,可以被称为静态属性,类属性
static作用于方法上,可以被称为静态方法,类方法
class People {
private static ClassName:string = "类名"
nickName: string
constructor(nickName: string) {
this.nickName = nickName
}
static getName() {
console.log(People.ClassName)
}
}
let p: People = new People("枫枫")
People.getName()
console.log(People)
接口类
注意,interface只能定义公共属性和方法
interface PersonType {
name: string
age: number
getName():string
}
class Person implements PersonType{
name: string
age: number
constructor(name: string, age: number) {
this.name = name
this.age = age
}
getName(): string {
return this.name
}
}
let p1 = new Person("枫枫", 12)