ts中的class类(批量创建对象)

//class类
class sayWords {
    //创建两个变量(变量的值必须初始化,若没有初始化,需要在构造函数中为其赋值)
    userName: string;
    userSay: string;

//给变量赋值
    constructor(userName: string, userSay: string) {
        this.userName = userName;
        this.userSay = userSay;
    }

    userActive() {
        console.log(`${this.userName}开始说话啦,他说${this.userSay}`)
    }
}

//创建对象并引用(实例化对象)
const s1 = new sayWords('tom', 'hello')

//类成员的属性,都是实例属性,即实例化对象之后,当前实例对象中包含所有的类属性, 类成员方法,都是实例方法
console.log(s1.userName)
console.log(s1.userSay)
s1.userActive()

和js对象相比,js对象需要通过prototype的方式将对象方法绑定到他的原型上,ts类中函数直接写在class当中。(写法上的区别)

类的继承extends

//类的继承
class Dog{
    name:string;
    static sex:string;
    constructor(name:string){
        this.name = name
    }
    run(){
        console.log(this.name)
    }
}
class Husky extends Dog{
    // 父类的构造函数所包含的参数,子类也必须包含,且子类必须含有super
    constructor(name:string,age:number){
        super(name)
        //给属性赋值必须在super之后
        this.age = 2
    }
    age:number
}

类成员修饰符
public 公共属性(默认修饰符)
private 私有属性 只能在类的本身被调用而不能在类的实例或者类的子类中调用
protect 保护属性 只能在类和其子类中被调用,不能在类的实例(new Dog())中被调用
readonly 只读属性 必须给该属性初始化并且不能更改
static 静态属性 static 静态属性 可以通过类来调用 Dog.sex,也可以通过子类去调用Husky.sex

//类的构造函数的属性,也可以给他添加修饰符
class Animal{
    //相当于在当前类中声明了一个公共的name,name就变成了实例属性
    // name:string;
    constructor(public name:string){

    }
}

抽象类 abstract(只能被继承,而不能被实例化)
可以用来封装多个公用的函数,提高代码的复用性

abstract class AbCla{
    eat(){
        console.log('eat')
    }
}
class AbChild extends AbCla{
    name:string;
    constructor(name:string){
        super()
        this.name = name
    }
}

let ab = new AbChild('hah')
ab.eat()

你可能感兴趣的:(ts中的class类(批量创建对象))