抽象类

作者: 幸宇 | 来源:发表于2022-04-17 12:11 被阅读0次

    // 抽象类
    // TS 通过 public、private、protected 三个修饰符来增强了 JS 中的类
    // 所谓抽象类,是指只能被继承,但不能被实例化的类,就这么简单。
    // 抽象类有两个特点:
    // 抽象类只能被继承,不能被实列化
    // 抽象类中的抽象方法必须被子类实现
    // 抽象类用一个 abstract 关键字来定义,我们通过两个例子来感受一下抽象类的两个特点。

    // abstract class Animal{}
    // const a = new Animal()

    abstract class Animal{
    constructor(name:string){
    this.name = name
    }
    public name:string
    public abstract sayHi():void
    }
    class Dog extends Animal{
    constructor(name:string){
    super(name)
    }
    public sayHi(){
    console.log('zhang')
    }
    }

    // 为什么叫抽象类?
    // 很显然,抽象类是一个广泛和抽象的概念,不是一个实体,就比如上文的例子,动物这个概念是很广泛的,猫、狗、狮子都是动物,但动物却不好是一个实例,实例只能是猫、狗或者狮子。
    // 官方一点的说法是,在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
    // 比如 Animal 类只是具有动物都有的一些属性和方法,但不会具体到包含猫或者狗的属性和方法。
    // 所以抽象类的用法是用来定义一个基类,声明共有属性和方法,拿去被继承。
    // 抽象类的好处是可以抽离出事物的共性,有利于代码的复用。

    作者:前端阿林
    链接:https://juejin.cn/post/7068081327857205261
    来源:稀土掘金
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    相关文章

      网友评论

          本文标题:抽象类

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