ts中的class
construct 构造函数 class People { name: string constructor(name: string) { // this表示
ts中的class
发布时间:2023-10-12 (2023-10-12)

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)