类-构造函数-继承-抽象类

2022-07-27  本文已影响0人  浅浅_2d5a

// 使用class关键字来定义类

class Person{
    // 直接定义的是实例属性,需要new Person()生成的实例去访问
    name: string = '张三'
    // readonly name: string = '张三' //设置只读后,实例化对象就不能再更改
    // 加入static关键词 定义静态属性(类属性)Person.age 进行访问
    static age: number = 12
    // static readonly age: number = 12 // 设置静态属性为制度,static readonly的顺序不能变
    sayHello(){  // 直接定义的方法,就是实例方法
        console.log('hello')
    }
    static sayWhy(){  // static, 类方法,Person.sayWhy()
        console.log('why')
    }
}
var per = new Person()
console.log('打印',per.name) 
per.name = '李四' // 实例属性可以更改
console.log('打印2',per.name) 
console.log('打印1',Person.age)

// 构造函数使用

class Dog{
    name: string
    age: number
    // constructor 为构造函数
    // 构造函数会在对象创建时调用
    constructor(name:string, age:number){
        // 在视力方法中,this就表示当前的实力
        // 在构造函数中当前对象就是当前新建的那个对象
        // 可以通过this向新建的对象中添加属性
        this.name = name
        this.age = age
    }
}
var dog = new Dog('哈士奇',32)
console.log('dog', dog)

// 继承

class Animal{
    name: string
    constructor(name:string){
        this.name = name
    }
    sayHello(){
        console.log('say hello')
    }
}

class Dog extends Animal{
    age: number
    constructor(name:string, age:number){
        // super代表子类的父类
        // 子类中写了构造函数,必须对父类的构造函数进行调用
        super(name)
        this.age = age
    }
    // 增加子类的方法
    run(){
        console.log(this.name + '我在跑')
    }
    // 重写sayHello
    sayHello(): void {
        console.log('汪汪汪')
    }
}

var dog = new Dog('哈士奇',3)
console.log(
    'dog',dog
)
dog.sayHello()

// 抽象类
超类只用于被其他类继承,不能用于创建对象,以 abstract 开头的类称为抽象类。
抽象类可以添加抽象方法

abstract class Animal{
    name: string
    constructor(name:string){
        this.name = name
    }
    // 抽象方法以abstract开头,没有方法体
    // 抽象方法只能定义在抽象类中,子类必须对抽象方法进行重写,否则报错
    abstract sayHello():void
}

class Dog extends Animal{
    age: number
    constructor(name:string, age:number){
        super(name)
        this.age = age
    }
    // 重写sayHello
    sayHello(): void {
        console.log('汪汪汪')
    }
}
上一篇 下一篇

猜你喜欢

热点阅读