00:00
下一个章节。呃,下一个章节呢,我们来介绍一下。这个开它里面的一些比较奇怪的字符啊,它的一些符号,那么我们从泛型开始给大家讲一下哈。唤醒这个概念呢?同学们在Java的时候其实已然学过了,对吧,已经学过了,呃,什么时候咱们会用到泛型呢?如果我们要求函数的参数。可以接受任意类型。可以使用半行。这个类型可以代表任意的数据类型,对吧,你比如说我们。创建这个list。List的,在创建历史的时候呢,我们可以传入整形。啊,真行。啊,字符型,字符串型,浮点数等等任意的类型,那么那是因为历史的类呢,在定义时使用的泛型,你比如加中。
01:09
咱们可以通过这种方式来指定一个方型。那么我们看SC里面的这个泛型的一个应用啊,我们通过案例来给大家讲一下,你比如现在呢,我们有这么一个要求编写一个message类,对message类,那么这个message类呢,希望能够构建int类型的message,也可以构建尺寸类型的message啊,要求用泛型来完成啊,说明不要用any,因为any呢,它是什么都可以放进去的,其实any有时候不太合适,因为它放进去是N,你取出来诶它还是N0,还有类型转换也很麻烦,所以说泛型呢,我可以明确指定是什么什么类型。那这种题咱们怎么去做呢?非常简单,一般来讲,按照这种需求,我们可以这么去设计。
02:02
啊,怎么设计呢,大家看这里。首先呢,我们去编写一个抽象的类。啊class,然后这地方写上一个T,就代表这是一个泛型,所以泛型不一定都是大写的T,也可以大写的ABC,都没有要求,然后这边我制定为T,然后这边我写这个函数返回这个值。那么扩子类扩展的时候呢,就可以约定具体的类型了,比如说我在这写一个string ma,然后我指定这是string传进去扩展,我们ma就进行一个继承,这样就可以了,那我们简单的给大家执行一下。好,现在呢,我们建一个章节啊,叫CHAPTER18。幺八,我们来写几个案例。好,现在呢,我们。写一个测试文件,开始往里面打包,我们现在讲的这个语法是什么语法呢?Generic叫泛型。
03:09
啊,我们先写第一个案例。Generic泛型DEMO01,对不对,好,那么写一个object,这个地方是我们将来的测试代码,然后我们先把这个要求拉过来。把要求拿过来,我们来写一下。好要求是这样子的,对吧。很简单的,很简单要求呢,他可以做第一个第二个是吧,好现在我们开始写啊,写一个类啊,写个message这个类。那么message这个类呢,因为它没有实例化的对象,所以说我直接写成抽象的,然后规定给他提供一个泛型,然后里面呢,可以接收一个值,这个值类型就它。啊,然后这里边呢,我们写一个get啊,Get本身是有一按理说应该这么去写对吧,但是呢,因为你这返回就它,所以说这全都可以简写,直接写成这么一个形式,以前呢,在讲SC语法时候我们提过。
04:15
好,现在呢,他说构建T类型的和string类型的,那就简单了,咱们怎么办呢?Classt string,就这个string呢,它都先来的,只是in特类型的,那我就干什么呢,传进去一个具体的类型,比如说。这方我们指定是int的,然后呢,给他传一个值对不对,叫value,对这一个值吧,Value,然后呢,这个类型咱们就写一个具体的。L。L然后呢是int类型,然后我们继承一下。啊,这个是个V吧。V,然后我们继承一下什么呢?Message啊,继承一个message,然后这边我们传进去指定一个类型啊。
05:07
指定一个int类型的话呢,我们来看一下这个地方,在指定的时候,有个地方要注意一下,看这里。继承,那么我这写了string,这边写成这边写成一个这个就这个地方就不需要再写了,直接把这个值传进去就可以了,你说这咋们。不需要再写,因为前面已经写清楚了,所以说直接V啊就可以了,那这个里面没有写东西,这就算是结束了啊结束然后呢,我们来看看能不能用它一下啊,来用一下,比如说现在呢,我们实例化一个int类型的string,就类型就int int,比如说十对吧,VL,当我们写一个int。啊,Message。好,然后我们输出这个值啊。好执行一下,看它运行的效果。
06:01
诶看它运行效果,像运行效果呢,这个就是我们的一个int类型,那如果说我们希望构建一个是最类型的啊,你也可以用泛型来搞定他死罪。啊,这边呢,我们写上十寸啊,这样就可以啊,这边在传的时候就不能乱传了,比如说你这指定是十寸,那你要传一个字符串,那别人就会报错对吧?哎,这样就可以约束他,同样,呃,我们写一个是最类型的message,约定是10STRING类型的,给他来个hello对value。好,假如现在是。对吧,Message。然后呢,我把它输出来,诶朋友们这个很讨厌啊,怎么跑这儿去了又。啊。Hello。好点。VR。倒是是准。Me啊?然后呢,我们来输出。啊,最message。
07:01
啊,执执行这个。对吧,执行这个,那这边返回的是一个什么呢?是最类型的,好就这样子的,这是它的第一个应用案例,第一个应用案例我们先把这个设计模式关一下。好,这是第一个应用案例,我们再来看他的第二一个应用案例,第二个应用案例呢,有点意思了,他是这样写的,他说请设计一个English class,就英语班级。那么要求呢?在创建英语班级的时候,有一个创建一个英语班级的实力时,需要指定开班的季节。就是是春季班呢,还是秋季班还是夏季,夏季班还是冬季啊,就是有这么季节,这级别呢,就是四个不能改,然后呢,要指定班级的名称,就是你这个班是什么什么班对吧,班级的类型啊,班级类型就三个信息,那么开班季节呢,只能只能是指定的这种四个班级名称是字符串立型的。
08:04
哎,但是呢,他有个要求,他说班级类型呢,可以是。字符串类型的,比如说写个高级班,初级班。对,而且这个班级类型呢,也可能是特类型的,就这班级也可能是一代表第一种类型的,一类型的,二代表二类型,但是这个类型呢,有可能是不一样的,这个时候让你去设计,用泛型来设计,你怎么写呢?诶,这里面呢,因为大家看到,呃,它这里面的这个班级的类型啊,它是有多种类型。那这时候呢,泛型它就能够发挥作用了。对,而且人家说不要用any啊,你不能什么都用any,人家这个泛型也是有价值的,如果说呃,什么都拿any的话,泛型就没有意义了,对吧,像这种说法啊,这边它是有用的,那我们怎么来设计这个东西呢?好,同学们,我们一起来完成这个案例啊,也是关于泛型的一个应用,也是完成泛型应用,我们呢,写第二一个案例。
09:08
通过这个案例,我们加深对他的认识。generic da02。对吧。写一个。好,那现在呢,我们这样来把要求先拿过来。那么就开始写了。写了好,我们按照他的要求来完成吧。按照他的要求来。首先我写一个类。叫。这个类,English class这个类。好,这个类。啊,那这个类呢,我们要去指定相应的这个数,它的那个值,那我现在就直接在这个类这指定泛型AB。啊C好,然后呢,他的第一个是什么呢?第一个他说是班级的名称,那就是拉啊班级的这个季节班级con啊,然后这些类型呢,我们是用A来指定,就你想给他的什么类型你来确定,第二个呢是班级的。
10:15
什么呀,名字班级名字呢,用B这个类型来指定。啊,B这个类型来指定。然后还有一个是班级的什么呢类型,班级类型呢,我们用C这个类型来指定好,这就写完了。对吧,但是为了将来这几个词能够成为我们的属性,因此呢,我这里直接写个value Val。啊,大家看这个能理解啊,以前讲过的,因为这样写了过后呢,我们传入的这个值呢,就成为它的只读的属性啊,这就写完了这么一个。啊,这么一个,后面这个两个就不用写了,因为是空的,这写完那写完了,我们来开始设计了啊。他说你这个班级季节只能是春夏秋冬,那我现在呢,设计一个memory啊,季节。
11:08
季节,季节是这个枚举类型的,我们怎么写呢?枚举类型。好枚举类型的话呢,一般这样来写啊,同学们看class class这个地方叫season SE o e。缪,然后呢,这个我让他去继承继承exe啊明意思。哦,就继承他。既然他里面怎么去写这玩意儿的呢?我们用的是一个type,大家还有印象。然后呢,我给它取一个别名,它的值是value value值,然后在这里面呢,写上我要的这几种枚举值,好,这个我就推一下来了,这是四个一次性的给他啊,Value。哎,这个在以前我们是讲过的,那这样子呢,里面有四个属性,诶也只能用这四个属性啊,都是我们这个枚举,好,这个写完了以后呢,有了这个类型过后,我们就可以来玩一把了,来看看怎么用。
12:13
二使用。使用我们先来创建第一种班级啊,来六一个英语英语班。英语班那么类型呢,我们先第一个呢,第一个类型呢,我们就去引用这个season啊,给他传一个这种类型的。对吧,然后第二个类型呢,就是我们假如是传的是十寸啊,班级名称是十寸,第三个是什么呢?假设第三个他现在是字符串案,这种班级类型我们写的是时最。好,后面就可以给值了,第一个我们来给它传一个具体的值好引进去,第二比如说这个呢,是我们的,呃,这个spring啊。
13:01
啊,这里面没有引进去是吧,这应该报错了Type C人看对方诶没有包包没有引进去吧,好像是点先写上是不是好这样子呢,我们以一个,因为这个类型呢,是在它里边啊是在这里边说要以下啊第一个写完。第二个呢,给他来一个班级的名字,比如说我们现在是呃,0705班啊,07505班,那么我们这个班级是什么班呢?是高级班对吧,高级班。高级。高级版。这样写完,那这边还有一个小问题,我们看是哪里出了问题了。Va v season。这样报是什么时候呢?他说类型不匹配,类型不匹配是不是因为这前面没有写啊。啊啊,这样就匹配类型就匹配上了啊,因为你这里面其实是用的它这个类型,说这个类里面这个类型明白吧,啊这个意思好,然后呢,我们就来接收一下点VR。
14:08
好,这是我们的第一个班,CLASS01,这个班好,零一班就有了啊,有了过后呢,我们来玩一下。为第啊class class01。好,现在我们来输出一下这个班级的信息吧。啊,CLASS01。我就随便输几个啊class点先看它的季节,再看一下它的名字啊同学们,以后这些代码呢,你就得看懂了名字,再看他的这个班级的类型,诶CLASS01点它的类型是什么类型的,我们输出一下。运行。啊运行,那运行完过后呢,我们看到这个结果对吧,我们看到这个结果跟我们想的是一样的,是秋季班啊秋季班春,呃春季班,春季班这个班级是0705是高级班带进去了,那么与此同时呢,我们还可以创建第二一种类型的班级,也用范型来搞定,什么类型呢?诶它前面都一样。
15:16
但是这个时候呢,我们希望他的班级类型变成了类型的,诶这样子就可以来指定类型,那后面我就偷个懒了。对吧,那这个时候这个班级呢,假设我们这个是0707班,然后他的班级类型是什么呢?看你写字串就过不去了,我说我们是第一种类型的班级。好,这个班级呢,我们来写个CLASS02,好。其他一样的我就把它输出来啊,同学们,这个就是零二班,它有什么信息呢?它也是春季班,它的名称,它的类型运行项。这是我们讲的第二种泛型的类型使用啊,运行出来也是一样的,去记零界利一第一种类型的,好,那关于第二个这个应用泛型的应用案例呢,我们就讲到这里,对吧,也很简单,截取一段视频。
我来说两句