00:00
好,我们继续来说啊,还是呢,继续我们这个继承这个话题啊,我们来新建一个TS文件,我们来一个零五,说一个叫做抽象类,什么叫抽象类呢?我要省点事儿了啊,偷点懒,把这个零四里边的代码我复制过来,把这index呢这改成零五。哎,零五我们叫做一个点,哎零五这个下划线,我们做一个这个抽象类,抽类点一个减改一下。然后回到这儿来,我们接着来说啊,接着来说这个代码的话,我们就是刚才直接从零四那儿给它,哎,复制过来的啊复制过来的,那现在的话,我们来看一下啊,它现在有什么问题,在这里边呢,我把这个代码呢,给它简化一下,我就直接让这个do呢,去继承我们这个animal,然后呢,在这儿我们去直接去调这个c hello。那现在的话,这有怎么有个错啊,我们看一下啊。一个arguments,但是传了两个。
01:02
啊,参数的问题。OK,把这块给它改过来,然后呢,这就都没有问题了,我们看一下效果。注掉打印一下啊,看看已刷新。稍微等一下,等他这个编译过去。嗯,柚子买,Say hello。行,OK,那现在就已经编联关联过来了啊,不用管它了,叹号没事,不是红色就行,那这里面我们再打开,那现在的话我们要说的是什么呢?现在呢,安莫是负联。哎,Dog呢是子类,Animal呢表示的是动物啊,而这个dog呢,表示的是这个狗,对吧,表示的是狗,那我们现在想一下啊,一边说你们一边想,我们dog是用来创建对象的。而这个animal,我们希不希望有人拿它去创建对象,哎,比如说创建对象的时候直接来一个什么呢?哎,Let,一个animal等于一个new,一个animal。
02:04
现在先说这么做呀,肯定行,我创建一个蛇吧,这么做肯定行,但是我们想一下,我们希不希望他这么做。不希望,为什么呀,Animal的范围太大了,你如果用animal创建完了一个对象,这动物是啥呀,我们不好判断,哎,不好用。而我们这个animal的话,它实际上是一个负类,是一个基类,是一个超类,它的作用就是专门被别的类所继承的,我们并不希望animal。用来创建这个对象,也不希望出现animal类型的对象,但是的话,现在我们这么写,不可避免的animal会被用来去创建对象,那么我们怎么能禁止一个类被用来创建对象呢?诶,我们可以在这个类前面加一个abruct,哎,哎,ABS叫做一个abruct,这叫什么呢?哎,我们先说一下,以这个ABS abstract开头的类是什么呢?是抽象类。
03:10
是抽象类,这个抽象类啊,抽象类和。和其他类,其他类区别不大啊,区别不大只是什么呢?只是不能创建对象,不能用来创建对象,那这个时候说白了,说白了抽象类是干嘛的。抽象类就什么呢?诶就是专门用来被继承的类啊,这个类抽象类干嘛的,生下来就是专门他就一个作用,就是给别人当爸爸的,就是给别人当这个诶副类的,他就这么一个作用,你说老师我创建一个吧,我这来一个new anymore来一个cost,我们来一个这个animal,等于一个new,一个animal,你只要new了,你看它都没有给你提示,你看到了吗?这提示都出不来,你但是你写上了,你只要拗了,他是不是就给你报错啊,哎,你看不能创建一个实例,诶通过什么呢?通过这个抽象类继承是没有问题的,但是你就不能再去创建它的实力了,所以使用抽象类很好的避免了什么呢?诶避免了这个问题,所以什么是用抽象类,就是当你不希望这个类创建对象的时候,被创建对象的时候,你就可以使用什么呢?使用抽象类,这是一个,然后抽象类还有一个特点就是。
04:33
抽象类当中可以去添加抽象方法。抽象类中可以什么呢?可以添加抽象方法,抽象方法是干嘛的?这就是我们说的另一个话题了,你像啊,我们在这个animal这个类里边,我们有一个方法叫做say hello say hello,这个方法很显然是没用的,为什么没用的?因为我们这个animal是专门被用来继承的,诶塞哈呢,实际上就是一个动物叫的方法,那我们说不同的动物它叫它叫叫声一不一样呢。
05:07
不一样,狗是汪汪汪,诶,猫是喵喵喵对吧?诶兔子是吱吱,它的叫声它都是不一样的,所以这个时候我这儿写一个c hello,这个c hello一点意义都没有,为什么呀,因为那动物叫声不一样嘛,你写上这个以后,你等于写了一个通用方法对吧?通用方法但是能不能满足每个类的需求啊,不能,而且最可气的是有可能什么呢?你在写一个类的时候,这个方法你忘了重写了,你忘了重写了是不是就会用到这个默认的方法呀?哎,所以这个时候我们其实实际上就有一个期望,期望什么呢?哎,期望呀,这个方法呀,我在这个类当中啊,我就不定义它的具体实现了,我干嘛呢?我把它的结构定义出来,它长什么样子,那具体的实现由谁呢?由这个子类来决定,那这个时候我就可以在这个什么呢?诶在这个方法之前加上一个abstract abstract。
06:07
然后后边这一系列你就可以就都什么了,诶你可以写一个诶VID,它的返回值是空,没有返回值,你就可以直接在这儿来定义一个抽象方法,抽象方法抽象方法什么特点,抽象方法使用什么呢?抽象方法使用这个a truck的开头,诶并且没有什么呢,没有方法,没有方法体抽象方法干嘛呢?抽象方法只能定义在这个抽象类中,只能定义在抽象类中,并且我们这个子类必须对我们这个抽象方法进行什么呢?进行重写,所以当你这设置完抽象方法以后,你看我现在到个这个类里边,我重写了C下漏啊看着这没问题,对吧,没问题,但是如果我创建一个class,我来一个cat,我们来一个animal,让他去继承这个animal,我什么也不写,你看这时给你报错了。
07:07
你这红线是不是又出来了什么错误,哎,叫什么呀,Abtra class,诶,K does not叫实现继承没有实现抽象成啊成员c hello from cloud animal什么意思?因为我们在这个animal里边,它这个抽象类里边有一个抽象方法叫C哈洛,而你的cat是不是继承了animal,诶继承了animal,你又没有实现这个方法。就给你报错了。那这个就是其实抽象的一个作用,像这种情况就是诶,你像在这个K里,我们这个,哎,就强制我们你可去实现这个say hello,这样你实现完了以后,诶我们这写一个吧,Cancel点一个诶log,我们来一个喵喵喵啊喵喵喵,诶那这样的话,哎,我们这儿就没问题了,是吧,这个错误就消失了。所以抽象类的概念也很简单,抽象类是什么?抽象类就是一个专门用来被其他类所继承的类,它没有办法去创建实例对象,它里边可以去添加抽象方法,抽象方法诶只能添加到这个抽象类里,就这么一个东西,很简单啊。好,关于这个抽象类,我们就先说这么多。
我来说两句