TypeScript新手入门学习指南,持续更新中~

}

const xiaoqi = new Dog(‘xiaoqi’)

console.log(xiaoqi.run())

console.log(xiaoqi.bark())

此时打印结果如下:

继承

从上面可以看到, Dog 继承了 Animal 类,此时 Dog 就拥有了 Animal 类的属性和方法。而 xiaoqi 实例化了 Dog ,因此它也拥有 Dog 的属性和方法。


多态:

class Animal{

// 构造函数是实例化执行时候的逻辑

constructor(name){

this.name = name

}

run(){

return ${this.name} is running

}

}

const snake = new Animal(‘lily’)

// console.log(snake.run())

//-----------------------------------

class Dog extends Animal{

bark(){

return ${this.name} is barking

}

}

const xiaoqi = new Dog(‘xiaoqi’)

console.log(xiaoqi.run())

console.log(xiaoqi.bark())

//-----------------------------------

class Cat extends Animal{

// 静态方法不需要进行实例化,直接在类上调用即可

static categories = [‘mammal’]

constructor(name){

super(name)

console.log(this.name)

}

run(){

return Meow, + super.run()

}

}

const maomao = new Cat(‘maomao’)

console.log(maomao.run())

// 直接访问静态属性

// 为什么要有静态属性?当定义和实例没有太大关系时,可以考虑使用静态方法实现

console.log(Cat.categories)

此时打印结果如下:

多态

阅读代码我们可以发现, xiaoqi 继承了 dogrun() 方法,而 Cat 继承了 Animal 类,但是它对 run() 方法进行了改写,因此最终的 run() 方法为改写后的效果。

所以, maomao 继承了 Cat 类,最后 maomao 调用 run() 方法时,就会调用 Cat 里面改写的 run() 方法,而不是 Animal 类的 run() 方法。

这样, xiaoqimaomao 虽然同样继承自 Animal 类,但他们调用 run() 方法的结果各自相互独立,如此,就实现了多态。

同时,我们还要注意一个点,就是静态属性。大家可以看到上面定义的 categories ,用了 static 来定义它为静态属性。当把变量定义为静态属性时,则当外部需要该静态方法时,不需要进行实例化,之类在类上调用即可。

那么问题来了,我们什么时候才需要有静态属性呢?

其实,当定义的内容和实例没有太大关系时,就可以考虑使用静态方法。比如常量的使用,常量基本是固定的,

  • 24
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值