00:00
同学们大家好,那么这一小节我们继续给大家带来面向对象的内容,那么本小节主要内容是什么呢?是我们的抽象类,这里边新建一个文本文档,用来记录一下抽象类相关的信息,好不好在里边写上啊抽象类。抽象类写错了啊,叫抽象类好了,那么抽象类大家从意义上能看出来,好像是一种类,对不对?那到底什么是抽象类呢?什么是抽象类?什么是抽象类?类,那么这个时候大家考虑问题,什么叫抽象啊?是不是大家经常说,哎呀,这个东西很抽象,什么叫很抽象?其实就软的不精致,不具体,所谓的抽类是什么意思呢?所谓的抽象类啊,其实就是不完整的,注意它是不整的一种类,不完整一种类。当然这种说法是我们个人的说法,如果用我们官方术语来表示叫做什么呢?具有抽象方法的类就是抽象类。
01:06
啊,那这个时候又出来问题了,抽象方法是什么意思呢?是不是,所以考虑第二个问题啊,是什么是我们的抽象方法。什啊叫什么是抽象方法,抽象方法也有一套自己的定义啊,什么意思呢?就是不完整的方法,那到底什么是抽象方法呢?官方定义也非常简单,叫做什么呢?没有方法,没有方法体的方法啊,没有方法体的方法就是抽象方法,简单的说就是这个方法只有什么呀,方法名,方法参数,然后方法具体内容什么都没写,那这就叫做抽象方法了,所以从概念上来说还是不不是太麻烦,对不对?那么我们在这里边给大家来使用代码来介绍一下抽象类的定义方式和使用好不好?在里边首先打开我们的呃排查新建一个文件啊,我们要讲抽象的,那么abstt。
02:14
呃,Mtra什么来着?Mtra class啊,Mtra class抽象类啊,那么在这里边啊,为了给大家建立抽象类,我们需要在做抽象类之前为大家讲一个额外的知识点,什么知识点呢?来打开我们的画图板。来,我们来看一下这个关于Python更加深入的底层问题啊,来,在里边一般人我不告诉,打开画图板。好了,画图板打开了之后呢,我们在这里边啊,先画出一个啊小框框啊,小小小的椭圆小这个行不知道吧。好,这个表示什么东西呢?它表示一个对象啊,它表示一个对象。
03:00
好,那么大家想一个问题,对象是由谁来创建的呢?没错,确实是由类来创建的,所以对象的上一层是什么呀?是类啊,是类对不对?那类是由什么来做的呢?我们之前是不是一直没有考虑过啊,对不对?所以呢,类实际上上面还有一个内容,什么内容呢?诶,就是用来制作类的东西,我们称之为猿类啊,称之为猿类很多说什么叫到底什么叫猿类啊,简单说就是用来做类的一种特别的类,在我们这里边注意看好了,猿类可以制作类。类可以制作对象,所以原类它还有一个额外的名称,什么名称呢,叫做。类生成器啊,原类是用来做类的,所以叫类生成器,那么类是用来做对象的是不是?它其实也有个名字叫做对象生成器啊,当然也可以叫做什么实力生成器,都一样啊,生成器,所以呢,我们在什么呀,原有的对象类的基础之上,又新多了一个更加底层的东西,叫做圆类,那么简单说就是原类是来做类的对不对?好,那讲这个干什么事呢?来回来看,我们如果想制作抽象类,那么就需要用到圆类这个东西。
04:29
好多同学说猿类是什么,我好像从来没有接触过呀,还真不是,大家平时的工作中和学习中已经接触过猿类了,只是我们没有什么呀,更详细的说明,毕竟那个时候还没用到,对不对?那么现在我来告诉大家,我们平时到底用没用到过猿类?好了,来给大家看一下关于原类的一些小内容,好吧,关于原类。关于啊,原类当然在这个位置哈,我只是简单介绍原类猿类的详细应用和操作,我们可以后面给大家再讲解好,那关于原类的内容呢,我们之前已经碰到过了,但是我们没有提,对不对?好了,给大家看一下到底原类在哪里,首先呢,Class我们可以声明一个类啊,什么类都行,比如说我声明一个汽车类吧,看好,然后这个类里边我什么都不写,注意看好了,只是一个普通的类啊。
05:25
定义一个普通的类,那么我们这个普通的类它到底是怎程序是怎么帮我们做出来的呢?好,那么这个时候原类该出场了,很多学生怎么查看一个类的原类来注意看好了,查看类的原类,怎么原类怎么查呢?并不很麻烦啊,原类我们可以这样直接。Print打印一下,打印什么呢?看它的类型就可以了。啊,这种方式就可以查看类的原类,就是我要查看一下它的原类,很多说这不是查看类型的吗?没错,类型查看其实就是使用原类来原类的这个tap来查看,好大家会发现,哎呀,是tap很多意思哦,原来这个car类就是用tap这个原类来制作的吗?对,确实对啊,而且这是第一种查看原类的方式,第二种方式呢,我们还可以再接着看啊,查看原类,查看原类。
06:27
查看类的原类,还有第二种方法啊,第二种方法是这样的,直接使用泪点就是我们的我们的看啊类不是car吗?类点下线下线class下限下限这种方式也可以查到当前类的原类,你会发限是一样的,所以对于一个普通的类而言啊,它的原类默认是谁?默认是我们的type,明白了吗?所以猿类啊,咱刚刚说了什么是原类。哎,给大家把这个概念记一下行不行?好,什么是原类啊,什么是原类,什么是原类?好,原类就是用来啊制作类的类啊,就称之为原类,我们正常情况下注意,正常情况下所有类的原类默认都是type啊,默认都是type。
07:23
都是type,所以type实是一个现实存在的,我们经常使用的原类,明白了吗?然后呢,查看原类的方式我是不是也查,我也教大家了是不是好来如何查看一个类的原类啊,如何查看一个类的圆类,这个方式也不麻烦啊,直接是使用类点类点啊下线下线class下线下线或者是type套上括号查询什么呀,类这种方式都可以查到一个类的原类,当然很多学说这个type我们当前查类型用的呀,是不是注意看好了,注意区分,干什么区分呢?如果type用来查询类型啊,查询数据类型,你查询的并不是类,而是这样做的,Type套上括号,你在这里写的是对象啊,明白了吗?明白了吗?所以类型指的是类,而类的类型指。
08:24
则是原类,是不是刚好跟这个图相应相符合啊,对不对,所以对象的类型是类,而类的类型则是它对应的原类,那么在这里边很明白了吧,是不是,那当然也可以使用对象点下划线象限class的方式来查看这个对象的类型,或者叫做类啊,所以这两个就要区分一下,因为它的用法非常一样啊,非常相似啊,但是需要还是要大家区分一下,那么到现在为止,我们都明白了一件事情,什么事情呢?来注意啊,我们明白了一件事情啊,叫做注意事项什么呢?叫做正常情况下啊情况下type是系统写错了tap啊,是系统默认的原类啊,默认的原类,而且原类什么作用,我给大家说下,是不是画图里也说了,原类作用是生成类,类的作用是生成对象,好了讲完这些东西之后呢,我们接着来做我们的抽象类啊,可能说那。
09:24
得讲原类才能用吗?是做数量类里边用到原类,所以我们在里边先给大家讲这个东西,好吧,把这个。啊,我们注意视觉。下面正式进入我们抽象类的制作好,那么抽象类该如何制作呢?首先在这里边啊,我们要做的是声明抽象类,抽象类的声明其实并不复杂,首先class我们在里边声明就可以了,比如说我们要做一个用户管理相关的类,行不行?那么再写一个优类啊,写一个优类,然后pass一下,很多说这不就是一个普通类吗?没错,他现在就是一个普普通通类,并不能称之为抽象类啊,原因是因为不符合抽象类的特征嘛,对不对?好,那么为了让我们这个类能够当做抽象类来使用,我们需要做一些准备工作,什么工作呢?第一件事要导入抽象类功能模块。
10:21
抽象类的功能模块,那么在里边直接import一下我们的ABC模块就可以了,我们说ABC也是个模块吗?是ABC就是我们abstract class的一个模块,就是抽象类的一个模块啊,那么也就这个模块是干什么用的呢?诶,制作抽象类的时候,你不可以使用最基本的什么呀。原类最基本原类是不是tap呀?抽象类可不能用它的原类来制作啊,因为我们在tap原类是用来制作正常的类的,而抽象类属于特殊类,它不能这么做,那怎么办呢?我们可以在user后面啊,照上括号指定make class,用来指定当前user抽象类,它在制作这个类的时候使用的材料啊,或者叫使用的原类是什么呢?是ABC模块当中的ABC me原类,这种方式就是用来指定当前类的原类,你不指定是tap啊,指定就按我们这个来做,因为你要做的抽象类必须要这么做啊,注意。
11:28
注意。制作抽象类啊,抽象类写错了,制作抽象类必须另外指定原类,明白了吗?好进来,那么现在这就是抽象类吗?还是谈不上,我们现在只是做了准备工作,但是呢,抽象类的概念里边明显写的非常清楚,你必须具有抽象方法,对不对?那么抽象方法有什么意思呢?来,在里边我们可以定义啊,定义方法。
12:00
第方法,那么正常情况下,用户里边咱一般什么添加用户啊,商城用户啊,这些方法是不是可以,那我们在这里写一个添加用户的方法行不行?添加用户的方法,然后再来一个叫做修改用户的修改用户的方法,然后再来一个什么呢?删除用户的方法和查找用户的方法。OK,那么这些方法我们就来做一下,那么做的时候呢,诶直接写DEF添加用户,咱写user下线abd行不行,好很多说啊这不这就是一个添加用户的方法吗?是,但是这是抽象方法吗?啊不是。好多说为什么不是啊,因为抽象法也得有它自己的规范,首先你要确定当前方法的分类,我们在上节课是不是讲过分什么呀啊,对象方法呀,类方法呀,绑定类的方法和静态方法对不对?所以你要先确定当前方法的分类,比如说这是一个对象方法,这是一个对象方法,那么他这样写实际上就已经成了对象方法,对不对?那为了让我们的对象方法变成什么呢?抽象的对象方法则需要对当前方法使用装饰器进行装饰。
13:31
好,怎么写呢?At ABC模块里边的叫做abstract模式,看懂了吗?ABS模就是抽象方法的意思,也就是说你想让这个方法变成抽象方法,要做这么几件事情,首先第一行定义该怎么写怎么写,然后呢,函数题内容必须使用pass来代替,不可以写其他内容,然后呢,需要在当前的方法前面使用装饰器,额外声明当额外进行装饰啊,把这个方法装饰成一个抽象的对象的方法,那么这样一来的话,我们就完成了一个出方法。
14:07
那么这个时候这个user类就已经是一个抽象类了,但是啊,我们抽象类写的时候要考虑很多问题是吗?方法是不是很多种啊,那是不是每一种方法你要对应不同的抽象,对呀,所以我给大家写了这四个方法,意思就是告诉大家每一种方法其实都可以做成抽象呢,那么下面添加用户的,咱做成对象方法是不是?那么下面修改用户的,咱把它做成一个类方法行不行?好,类方法,那么我们最终的目标自然要把它做成一个抽象的类方法了,抽象的类方法如果把它做成一个类方法,这个叫不难DF啊,修改用户啊,User下线Mo是不是叫user update吧,Update。然后套上括号,然后呢,Pass一下这里边儿因为是类方法CS,而且大家知道正常情况下的类方法本身就需要装置器吧,At class method,对不对,这是一个类方法的一个声明,但是呢,如果说我们希望这个方法变成一个抽象的类方法,就得把装置器再进行修改,改成什么呢?改成抽象类模块,或者叫抽象模块里边的什么呀,抽象类方法。
15:24
看见了吗?所以抽象类方法加写啊,Class和third,好,这里出现横线了,应该是语法问题,不用担心好了,那么接下来看下一个叫做删除用户的方法,咱里边定义一个DF删除用户user下线DL啊,考上括号,那么pass一下,我们把这个方法把它作为什么的一绑定类的方法啊,绑定类的方法,那么我们就需要把它做成一个抽象的,注意抽象的绑定类的方法,那我该怎么来完成呢?很简单,把这个删掉,因为我们不需要这个参数,对不对?然后呢,干什么事呢?在这里边直接写上at ABC模块里边的叫做抽象方法就可以了。
16:12
所以这是绑定类的抽象方法的制作,还有一种什么呀方法是我们的静态方法啊,静态方法。那静态的方法可以做成,我们把叫做抽象的吗?抽象的静态方法吗?自然也是可以的,首先在这里边我们写上一个user_find啊,表示查找用户码,查找用户的方法,然后呢,Pass一下,我们先把它做成静态方法啊,先做成静态方法把这个函数删掉啊,然后在这前面加上一个at static method,这是不是一个正常的静态方法,如果你想把它做成抽象的静态方法,就要把助装器删掉,变成ABC模块里边的是吧?叫abstract static method,看见了吗?Abstract sketic method,这样一来的话,我们的什么呀,抽象类就已经诞生了啊,就已经诞生了,但是需要注意啊是只要这个抽这个类里边有一个抽象方法,它就是抽象类,并不是说都得写成这这四种都得出现,而且都得写成这个,不是的啊,我只是为大家看的更加明白每一种是怎么样抽象的,当然啊,对于抽象类而言,我们抽象类中。
17:26
注意抽象类中可以有正常的方法啊,像类中可以有正常的方法也是没有问题的,比如说我在里边GE加上一个什么呢?加上一个叫做呃删呃删除用户写了,咱写了一个封禁用户吧,行不行?呃,比如说写上一个RO啊,Free user free,就是us写错了,行,Us user free啊。意思就是封禁用户啊,OK,或者叫you look吧,叫look LK look,好,那么直接写上print,我们写上一个叫做封禁。
18:05
用户的方法,这样也是可以的,当然大家会关心,哎,你写了这么多抽象方法,或者有没有语法问题,右键运行一遍,大家看一下有没有语法问题,完全没有任何语法问题,所以我们写的是正确的,明白了吗?我们写的正确的,那么下面我们就要考虑到了啊,这个抽象类好像写完了,按照定义是不是抽象类,是具有抽象方法的类咱都写完了,包括准备工作咱也做好了,那么抽象类到底有什么特征,它到底该如何用呢?首先先来看一下抽象类的特征。抽象类的特征啊,它到底有哪些特征,第一条看好了,第一条叫做抽象类。不能实例化,不能实例化使用,那这个类啊,你想实例化语法会报错的,来给大家看一眼啊,我们代理怎么做呢?我们在这里边啊准备。
19:04
叫做尝试着实地化抽象类user,好,那么我们在里边啊,这个user是大写小写。啊,第一个大写OK,然后我们再来U啊,等于U的超长括号,那么我们能直接画出对象吗?右键运行程序,大家会发现报错了,他说不能实例化抽象类user,因为它里边有抽象的方法,这四个看见了吗?也就说添加、删除、查找和设置或者更新这四个方法是抽象的,所以它不能够实例化。这也是我为大家写的第一个特征,抽象类不能实例化使用。好,那么我们再来看一下第二个特征。第二个特征是什么呢?是我们的抽象类中,注意哈,抽象类中啊,可以存在抽象方法,可以存在抽象方法,也可以存在正常的方法啊也可以。
20:07
存在正常的方法,我们在里边是不是定义的时候,已经为大家写过了一个正常的U法是不是,所以说抽象类并不是说,哎呀我只能写抽象的,不是的,这第二个特征来,第三个特征,抽象类中可不可以有属性呢?抽象类中可不可以有属性?来看一下抽象类中是否可以。添加成员属性可不可以加呢?自然是可以的啊,在这里边,比如说我们希望在里边加上一个ID的信息,那么你可以在这个类里边添加啊,比如说属性啊,加一个属性你可以写上ID啊,等于999没有问题的,语法也不会报错。看见了吗?所以我们的抽象类中啊,它也可以添加成员属性,那么问题接着来了,抽象。
21:01
啊,类到底有什么用啊,你这玩意又不能实例化是不是,那到底类这个类有什么用呢?注意看好了抽象类它的作用的作用啊,或者叫抽象类的使用吧,抽象类的使用。方式就是被其他类继承啊,也是这个类的作用只能用来做继承操作,其他的是不可以的,明白了吗?你写这个抽象类只能继承来用,别人想实例化不可以的,这是违反原则的事情,那么继承了又有什么用呢?或者继承了之后我们该如何来使用这个抽象类呢?好,这就涉及到我们最后一个特征了。好叫做其他类继承了抽象类,并且实现了抽象类的所有抽象方法,所有抽象啊抽象方法之后就可以使就可以。
22:05
写错就可以实例化啊。该类。比如说这个抽象类就是给别人继承,并且别人要实现抽象类中的所有方法的,那么在这里边啊,给大家来看一下,比如说我们在这里边要声明一个类啊,声明一个类。要干什么事呢?我们要继承user类啊来使用嘛。所以你要做的事情是这个样子的啊,是class,比如说我要做一个my user,怎么讲我的user类,然后呢,我要让他用继承user类,这样一来的话,我们实现它的应用就是用什么呀,我的类来继承的类,那继承了之后我都说那我这个类就用实例化了吗?来看好了,实例化,实例挂我们的麦有类。来在里边MMU吧,行不行?MU等于my user很多说这能实例化吗?依然不能实例化啊。
23:02
看了报错了,他这次报的是谁?My user的错误,因为my user继承了user,所以把user当中就是这个抽象类里边所有说法都拿过来了,拿过来之后,其实MYU的这个类啊,他也成了一个抽象类了,所以它依然不能使用,那怎么办呢?我们要做的是在这里边看好了,是实现所有抽象类中的方法啊,实现所有抽象类中的抽象类啊的方法,然后才能使用。那么来呗,你抽线位是不是有四个。来是不是有上面这四个,是不是,所以你要把这四个方法啊,干什么事呢?哎,不是错了,你要把这个四个方法在我的my user里边全部给它补充完整,因为上面这四个生方法是一个半成品,对不对,所以我把它补充完整,那么咱一个个来补充行不行,比如说在my user在里边先补充起我们的一个对象方法啊,把它变成一个真正的对象化。
24:02
那就需要删掉我们的装饰器,同时实现它方法体的具体内容,比如说啊,这是一个添加用户的方法,那么大家一看这个方法是不是就非常完整了,是不是有具体的方法内容,那我就写了一句话,代替啊,你可以写更多的代码,那下面这也是一样啊,我这是一个类方法,我要实现的,那么在这里把它的装饰器改成at class模,同时在这里边啊,Print套上括号写上啊,这是一个叫做什么来着,叫做设置用户的方法,接下来的话,我们这个方法是不是也实现了具体内容来接着往下看。那在这里边删除复操作也是一样的,那么如果它是一个绑定类的方法,那么在这里边啊,你需要删掉pass,写出它这个方法的具体内容,还是用一句话来表吧,这是一个叫做删除用户的方法。
25:05
那最后一个静态方法的实现,我们需要删掉,把它的装饰器改成static模静态方法的装置器,同时实现里面的内容。print号上括号我们写上,啊,这是一个叫做查找用户的方法。好,请注意啊,我在实现的时候全部使用了一句普话来代替具体的内容,因为具体内容要看你实际情况来决定,对不对,我添加用户啊,怎么地连接数据库啊,验证啊,是不是会有很多很多的代码,但是为了我们学习语法的方便,我只是用一句话来代替它的内容,好了,这样一来的话,你再来实例化嘛,User,你再看运行程序。他就不会报错了,而且真的生成了对象来print MU。U点运行一边程序,看到没有,是不是MYU的对象,而且我希望使用这些方法,那么在这里边就可以了,看到了调用叫做调用方法,哪些方法呢?比如说我们继承我们my user,继承user里边最简单的一个是不封禁用户的user look,行,那我在这里边对象也有了,我直接访问呗,行不行?
26:17
啊,调用user look方法,这个简单用对象mu.user look。User lock方法好搞定,右键运行程序,大家来看封禁用户是不是可以啦,然后呢,我希望再调用其他的,比如说我刚刚实现的第一个添加用户的方法,它是一个对象方法啊来,那我们在里边给大家写呗。调用要调用添加对象,添加用户的方法啊,就是我们的user啊,下划线ad视角吧,ADD方法啊,好,那么mu.user ad.user a DD,好能不能添加用户呢?大家来看是不是也可以啊,好,继续来添加完了之后我们还有实现了什么呀,还实现了这个设定互的,不过它是一个类方法啊,所以需要用类来调用啊,请注意啊,那么在这里边调用。
27:13
来调。用我们的user下线update update方法。好,我们在这里边使用类my user点。我们的user_update千万注意啊,My user调用哦,来,右键运行一遍。是不是设置用户的方法也可以啊,然后呢,接着来我们还有什么呀,要用删除用户的方法。啊,调用删除用户的方法,这是一个。什么呀,是不是一个绑定类的方法啊。它是U的DL,好,然后我们再来调用啊,也是通过类来调用的啊麦。My user my my user.user小件DL好,能不能成功呢?大家来看。
28:05
是不是删除用户也可以了,还剩最后一个什么呀,查找用户的方法,来查找用户的方法,它是一个静态的类核对象都可以调用了,是不是调用啊U的下线find啊find方法好来看一下能不能使用的方法,然后呢,直接咱就用对象叫什么点。u.uf的下划线find好,右键运行一遍程序。大家会发现,诶,是不是这些方法都可以调用了,都可以使用了,是不是,所以这也是抽象类的一个特征啊,就是继承并且实现了才可以实例化该类啊,才可实例化该类,那这个时候大家有疑问说这有啥意义,我觉得在原来那个类里边实现是不是就可以了?这里边引申出来另外一个问题,抽象类到底有什么用?抽象类啊,抽象类的实际作用是什么东西?实际作用啊,实际作用。
29:03
好,那么我就给大家来分析分析,假设说看好了,我上面我现在有一个事儿啊,有一个事儿,或者我自己代理一个工作组来进行开发,工作组当中我是组长,看好啊,我是组长,这是我。我是组长,然后呢,我还有四个小弟,我还有就是我带了四个职员,是不是我带了这么四个职员啊,四个职员。好,我们这四个资源分别是什么呢啊。小赵啊,这个叫小赵。小钱啊。小赵,还有小钱。叫做小钱。小孙和小李。来,这是小孙,这是小李好不好?这是我们的小孙,这是我们的小李。小李。
30:01
然后呢,我是这个工作组,或者叫这个项目组的一个组长,整个项目的开发过程当中,我是不是得定调调,是不是简单说我这是不得一规则啊,是不是,然后开发的时候,我是不是带着我我四个小弟一起干活呀,是不你不能说啊,我要写的,因为我要干一个活,全我一个人干,四个人看着,那我不需要程序员鼓励师,是不是我需要他们干活,那么这个时候你会发现,就以我们刚刚的user类而言,他这里边有五个方法,是不是有五个方法添加用户,删除用户,修改用户和查找用户,以及冰冻或者叫锁定用户,对不对,这五个方法,那这五个方法假设说每个方法都非常的大,那么如果我一个人来完成的话,可能需要非常非常长的时间,对不对,那么我可不可以干什么事儿呢?把这个工作分出去,就把我的工作分担出去,让他们每个人帮我写一个方法,我自己来完成一个方法呢,所以这个时候干什么事儿呢?那干活的时候你总得什么呀,你总得定点规矩吧,这个方法该叫什么名?
31:02
需要什么参数,需要什么样的东西,你是不是得先告诉你的组员,你的组员才能进行开发呀,如果你没有标准的话,它是不是瞎开发就乱套了,是不是,所以抽象类这个时候就出现它的作用了,什么作用呢?抽象类可以在我们定义的时候注意啊,定义抽象类的时候,把你需要什么呀,未来做的这个方法的信息写进去,比如说我要做一个对象方法还是个类方法,方法叫什么名,有什么参数,如果有参数你可以在里边写啊,有什么参数都给它提前制定好,制定好了之后干什么事呢?把这个工作。啊,分配给你的每一个员工,然后每一个员工实现他收到的那一个方法具体来实现,最后把这些整合到一起,是不是同时并列五个人开发效率会提升很多呀,不至于我一个人干四个人看对不对?所以抽象类的作用在哪呢?它在于啊,叫做制定。开发叫做程序规范,然后呢协同程序开发啊,协同程序开发,然后呢加速啊开发效率。
32:12
开发效率。效率啊,效率这是它两个作用啊,第一个作用叫做指定程序的规范啊,第二个叫做便于协同开发啊,就这么个东西,所以这是我们抽象类的一个作用啊。好了,那么既然我们也知道作用了,我们可不可以把刚刚这个类按照我们刚刚这个分配的方式来制作呢?答案是可以的,来,我们在这里边新建一个文件啊,新建一个开始文件。啊叫AB啊CLASS2行不行,然后干什么事呢,把刚刚这个抽象类啊,在这里边拿过来一份,我就不再写了,好不好,我就把这个抽象类给大家复制出来啊复制出来。头像类在这啊,给大家复制出来。
33:01
复制出来之后干什么事呢?我要用协同开发的方式来进行操作,看好了抽象类啊,写好了干什么事,是不是制定好规则了,制定了,制定了开发的规则,比如说这个方法叫什么名啊,是不是有什么参数啊,什么样类型,是不是制定好了,那么下面我把这这些方法分给其他员工,怎么分呢?首先我自己就不用分出去了,你看我自己在这里边直接开发就可以了,我自己在这开发是不是我可以在抽象类里直接写普通方法是没问题的,然后我把剩下这些方法平均的分配给我们图像中这四个人,比如说小赵负责第一个用添加用户的开发啊,这是小赵的开发啊,然后呢,修改用户,我们叫找给小赵钱,小钱是不是?然后呢,山村户,我们给赵钱小孙啊小孙。然后呢,我们这个还有一个是查找用户,我们把它交给小李啊,把它交给小李来完成啊,小李来完成,那这样的话工作是不是就划分好了,划分好了之后,那么下面要做的就是我们每个人的规范都在抽象类制定了,下面就是开发是不是就OK了,好,那怎么开发的呢?注意啊,抽象类的使用原则不变,依然是只能被继承开发,但是注意看好了。
34:24
我们这几个类之间必须有先后的继承顺序,我给大家画一张图,首先我开发的时候在抽象类里边,是不是我已经在抽象类里边,所以呢,正常情况下我编排的顺序可以是这样的,大家看是怎么编排的啊,是小赵和我之间继承,也就是说小诶诶,这画的不太好啊。可以,我们可以这样做啊。我们看一下。小赵来继承我的。然后完成自己工作,让小钱继承小赵的嘞。然后让小孙继承小钱的嘞。
35:04
然后小李继承小孙的嘞。这样一来的话,我们说白了,小李这类是不是把上面的所有的都继承了,然后我完成一个方法,小赵完成一个方法,小佳完成一个方,小孙完成方法,小李完成一个法,到小李这块所有方法是不是都实现了,那么他就可以实例化,可以正常使用了,那么在代码中的实现也并不复杂,首先在这里边啊,我们先来制作谁呢?我自己就不用写了,因为我在抽象类里写好了,所以我在这里边叫做小赵的工作,小赵在工作的时候呢,Class声明了一个类叫小赵user啊好了,叫小赵user user。他继承了我的抽象类Yoga。然后呢,他继承我的双类,我是不是给他分配工作了,小赵的工作就是什么工作呢,就是诶。添加用户,所以小赵需要把他自己的工作拿到自己的类当中去啊,拿到自己当中去,并且实现这个方法啊,并且实现这个方法,那实现就很简单啊,把上面这个删掉啊,然后呢,在里边咱直接输出啊print方上框,我们写上啊叫做添加用户的方法,没问题吧,写上小赵完成的啊,小赵完成的好好的,那这个时候小赵类能用吗?注意啊,小赵类它依然不能使例化,不要想那么简单啊,小赵啊,小赵user它是不能实例化的,因为它继承user的时候,继承的四个抽象画,你只完成了一个,他会报错,还有三个抽象方法,看到没有,还有三个方法。
36:40
没有实,没有实没有写完整,所以它也是一个抽象类,不能实例化的,好,那接着来呗,那接着来啊,再来看小钱的工作。小钱的工作好,那小钱的工作又是怎么工作的呢?Class叫小钱有点。小钱按照我们的继承顺序里边,是不是他记承小赵就可以了,所以就写上啊,小赵U的,然后呢,在这里边完成小钱的工作,那么小钱所分配的工作是什么呢?来往上拉,小钱分配的工作是一个修改用户的操作,你把他的工作拿过来,然后呢,在小钱的类里边完全实现啊,把它写成一个类方法,那么需要改成abstract,直接写成class such就可以了,类方法里面需要写上内容print,套上括号啊,我们这是一个。
37:30
叫做设置用户的方法,这是小钱完成的。完成的好,来接着看,那么小钱也能用吗?他也不能用,因为什么呀,他还有两个是不是专号没法用是不是,所以接下来啊,下面该到谁的工作了呢?小赵钱小孙啊小孙小孙是不是继承小钱来完成他的称号是不是好,所以我们在下面再声明一个类啊,什么类呢?就是小孙的工作啊,小孙的工作的类好,那么写上class小孙啊yo。
38:06
方长框,然后呢,他这里边要继承周义实际种小钱有的,然后把他的任务完成,他的任务是不是这个串方法,行把它完成呗,小孙完成他的工作啊,因为这是一个什么呀,类绑定类的方法,所以直接写就可以了,在这里边啊print一下它上括号,我们这是一个删除用户的方法,这是小孙完成的,但是依然没法使用这个类,因为小松是不是,呃里边还剩一个没有实现的是不是好来接着看到了最后了,最后一是小李啊好小李的工作啊,小李的工作。小李的工作这块的话,我们得这样来玩啊。class叫小李有点。他要继承谁上一个小孙优点,同时实现分配给他的工作,就是查找用户的方法。
39:00
把它拉下来。然后呢,粘贴一下,然后实现呗,这是一个什么静态方法,所以装置器写成STEM method,然后呢,实现的时候直接print写上啊,查找用户的方法叫查找用户的方法,这是小理完成的,好搞定,那么到了最后的时候,大家看我们经过四次进程,已经把所有的抽象类,或者讲所有抽象方法是不是都实现了,那么这里边这里可以使用小李的工作小李的类了,没问题了,所以你要用的时候是U等于小李U的实例话出这个对象保证不会报错,看见没运行一遍程序是没有任何错误,而且如果你想调用这里的方法啊,调用。叫调用方法。交友方法我们是不是准备五个是不是,比如说u.u lock,这个是我在抽象类里边直接完成的,那么它是可以使用的。
40:00
看见了封禁用户,然后呢,还有什么呢?User,呃u.user_ad添加用户的方法可以实现吗?来看。小赵完成的鉴证用户是不是可以用了,然后呢,还有U不能是U了,这个是类的啊,是我们的小李U点什么东西呢?这个是小赵小赵钱小钱完成的一个设置用户的方法,是不是user update,来大家来看。小钱完成的设置方法,还有小孙完成的删除用画,不过他是绑定内容,所以依然用小李user.user下划线我们的删除啊,DL来大家看一下。是不是也可以调用,还有最后一个啊,最后一个是我们的静态方法,对相格类都可以调用啊,优点什么的,User fund来,大家请看最后一个也可以使用了。看见没有,那这样一来的话,你会发现这个抽象类的实践实际上由四个人同时完成,对不对?当然大家会有疑问啊,说你这四个人不能在一个文件里开发吧?没错,我们这四个会在四个不同的文件里开发,只不过现在还没有学到怎么样分文件和和文件是不是?所以请注意啊,这里面虽然写到一个文件里边,但是可以在一个单独的文件中开发,我们是可以做到的,我们还没学到那一块啊,模块和模块那块我们还没学到,所以你现在看的起来是在一个文件里边,实际上可以划分到多个文件当中去的,明白了吗?
41:31
这样一来的话,你看抽象类的作用是不是很明显了啊,我可以指定开发规范,也可以什么协同开发,加速开发效率,不至于有人看有人干,对不对。抽象类就有这些内容啊,很多说抽象类什么时候用啊,在讲多肽的时候就会用到,在提升开发效率的时候也会用到,当然我们后边会给大家讲一下它的应用好不好,好了,关于抽象类的内容就先讲到这里边,感谢大家的收看,我们下一小节再见。
我来说两句