美文网首页
7.抽象类与多态

7.抽象类与多态

作者: 我性本傲 | 来源:发表于2019-11-26 18:33 被阅读0次

抽象类

定义

使用abstract关键字,只能被继承,不能被实例化的类.

好处

抽离出一些事物的共性,有利于代码的复用和扩展

注意

父类中定义一个方法,可以有具体的实现,这样子子类就不用实现了,实现方法的复用。

  abstract class Animal{
      eat() {
          console.log('eat')  //实现
      }
      abstract sleep() : void  //抽象方法。不实现,好处是:明确的知道子类有其他的实现
  }
  class Dog extends Animal{
      constructor(name:string){
        super()
        this.name  = name 
      }
        name: string
        run() {}
        sleep(){
            console.log('不在父类中实现,在子类中实现')
        }
  }
  let animal = new Animal() //报错,抽象类不可被实例化
  let dog = new Dog('hahhaha')
 dog.eat() // 子类中调用父类的方法
  

抽象类还可以实现多态

  class Cat extends Animal{
      sleep() {
        console.log('Cat sleeps')
      }
  }
 let cat = new Cat()
 let animals : Animal[]  = [dog,cat]
 animals.forEach(i => {
    i.sleep() //判断具体的实例是哪一种实例,执行哪一种方法,实现多态
 })

特殊的ts类型:this
类的成员方法可以直接返回一个this,这样子可以很方便的实现链式调用
在继承的时候this类型也可以表现出多态,这里的多态指:
this可以是父类型,也可以是子类型

 class words{
     step1(){
         return this
     }
     step2(){
        return this
     }
 }
 new words().step1().step2()
 
 class ciildWords extends words {
     next(){
         return this
     }
 }
 new ciildWords().next().step1().next().step2() //保持了父类和子类接口的连贯性

相关文章

  • 7.抽象类与多态

    抽象类 定义 使用abstract关键字,只能被继承,不能被实例化的类. 好处 抽离出一些事物的共性,有利于代码的...

  • Flutter 抽象类

    抽象类 抽象类介绍抽象类介绍 抽象类 打印: 多态 多态介绍 打印: 或者如下,通过指针赋值进行调用: 打印: 接...

  • 10.26学习总结

    今天学习了多态和抽象类。 多态学了虚方法、方法的重写,多态和继承的区别,重写和隐藏的区别。 抽象类学了抽象类的方法...

  • python鸭子类型

    抽象类,多态与鸭子类型 - 独角兕大王 - 博客园

  • Day12_13

    一.继承、多态、抽象类与方法和画图的综合运用 二.国际象棋棋盘

  • 02-Java基础-三大特性

    代码块、封装、Override与Overload、继承、多态、抽象类、接口、包(package) 代码块 概述:使...

  • 7.继承与多态

    子类是extends父类出来的 当调用对象引用的方法时,会调用到与该对象类型最接近的方法——最低阶的会胜出 判断b...

  • 25.面向对象(抽象类. 多态)

    面向对象(抽象类. 多态) 一. 抽象类 抽象类不能实例化 继承抽象类的子类必须将抽象类中所有的抽象方法重写 抽象...

  • 2020-06-27【抽象类与接口】

    1,多态 2,接口 3,类与接口的关系 4,抽象类与接口的关系 5,形参和返回值

  • 2018-11-26

    一,封装 Package继承 inherit多态 Polymorphism二,非抽象类不可以有抽象方法抽象类...

网友评论

      本文标题:7.抽象类与多态

      本文链接:https://www.haomeiwen.com/subject/cxxdictx.html