鸿蒙子父类之exends与super,公若不弃愿拜为义父

85 阅读1分钟

继承

类可以通过 继承 快速获取另外一个类的 字段方法。

父类:也可以叫做 基类 、超类

子类: 也可以叫做 派生类、继承类

子类能够访问父类的 属性、方法、构造函数,重写父类同名方法,测试调用

class dongzhuo {
  name: string
  age: number
  sayHi() {
    console.log(`我是董卓`)
  }
  constructor(name: string, age: number) {
    this.name = name
    this.age = age
  }
}
// 通过 extends 继承父类
class lvbu extends dongzhuo {
  // 子类 可以添加自己的属性 和 字段
  weapons: string = '方天画戟'
  sayHello() {
    console.log('我的貂蝉在哪里')
  }
  // 子类可以重写同名字段 、方法
  sayHi(): void {
    console.log('我是吕布')
  }
}
const s: lvbu = new lvbu('吕布', 18)
// 直接可以使用 继承而来的 属性 方法 构造函数
console.log(`${s.name}`)
s.sayHello()
s.sayHi()

image.png

Super

子类通过 super 可以访问父类的实例字段、实例方法和构造函数。可以在适当的时候使用 子类可通过super进行添加属性、构造函数、内部通过 super 调用父类构造函数完成父类属性的初始化、添加方法、内部通过 super 调用父类方法,复用逻辑

class dongzhuo {
  name: string
  age: number

  sayHi() {
    console.log(`你好,我叫:${this.name}`)
  }

  constructor(name: string, age: number) {
    this.name = name
    this.age = age
  }
}

class lvbu extends dongzhuo {
  height: number

  constructor(name: string, age: number, height: number) {
    // name 和 age 的初始化通过 super 来调用父类的构造函数
    super(name, age)
    this.height = height
  }

  sayHi(): void {
    // 通过 super 访问父类的 字段 方法
    super.sayHi()
    super.name
    super.age
    console.log('我的貂蝉在哪里')
  }
}

const s: lvbu = new lvbu('吕布', 18, 190)
s.sayHi()

image.png