5.继承
-- 未经授权禁止转载 --
//继承 一个类(子类)可以继承另一个类(父类)的属性和方法

//父类
class Person {
    //属性
    name: string
    gender: string
    
    //构造函数 用于初始化属性
    constructor(name: string, gender: string) {
        this.name = name
        this.gender = gender
    }
    
    //方法
    sleep(): string {
        return `${this.name} 休息中...`
    }
}

//子类 - David
class David extends Person {
    web: string

    constructor(name: string, gender: string, web: string) {
        super(name, gender) //调用父类构造函数来确保正确初始化父类

        this.web = web
    }

    eat(): string {
        return `${this.name} 正在吃饭...`
    }
}

//创建一个 David 类的实例, 并将其赋值给变量 david
let david = new David("邓瑞", "男", "dengruicode.com")

console.log("david:", david)
console.log("web:", david.web)
console.log("eat:", david.eat())

//调用从父类 Person 继承来的属性和方法
console.log("gender:", david.gender)
console.log("sleep:", david.sleep())

//子类 - Luna
class Luna extends Person {
    //若子类没有需要初始化的属性,也无需修改从父类继承的属性,则可以省略显式的构造函数
    //TypeScript 会自动生成一个默认的构造函数,这个默认的构造函数会调用父类的构造函数
    //因为 Luna 继承自 Person,而 Person 的构造函数需要 name 和 gender 参数
    //所以当创建 Luna 实例时,需要提供与父类 Person 构造函数相匹配的参数
    /*
    constructor(name: string, gender: string) {
        super(name, gender)
    }
    */
}

//创建 Luna 实例
let luna = new Luna("露娜", "女")
console.log("luna:", luna)


  • 状态: 更新中
  • 作者: 邓瑞
  • 课时数量: 37 节课
更新中 ...