00:00
那接下来的话呢,我们讲了一个知识点,就是说嗯,泛型类或者泛型接口在结合中有体现了,那我们如何去自定义啊,这就提到了说自定义泛型类,泛型接口或者是泛型方法,还是这个道理哈,以前呢,咱们说呢,这个类Java呢,给我们提供了很多啊,说我们还可以自定义类说呢这个异常,然后呢,给我们提供了很多,我们还可以自定异常,然后这个啊接口当然也是啊,提供了很多接口,我们还可以自定义接口,然后呢,这个注解,呃,提供了很多,我们还可以呢,叫自定义注解,那么泛型类,泛型接口,泛型方法提供了,我们也可以自定义,所以呢,这个是肯开放的啊,就是一方面呢,你可以用我的,另外呢,你还可以去自定义,让这个语言呢,就更具有生命力啊,那么自定义泛型类接口或方法,大家呢,就参照已有的啊,自定义这个泛型的结构啊,去参考一下就行,比如说呢,我们上课呢,写了一个order类啊,你呢,你可以就可以参照一下,比如collection或者是list或者是A。
01:00
List啊,你看它怎么写的你就怎么写啊,类似的就可以啊行这块呢,咱们就没什么难度了哈,直接呢就把这个代码粘过来,就我们呢定一个类,你在这个类的声明后边加上一个键框,哎里边呢写一个类型,这呢是一个不确定的,那你要有俩,就像map一样啊,就是写两要有三个可以写三个,那这个呢是根据实际问题啊去决定的,行这块呢,我们把这个呃类呢一直到这儿了啊,CTRLC咱们就拿回来就行了,这里边呢就涉及到我们去,呃这既既是一个泛型类啊,下边后边呢,这块还涉及到一个泛型方法了啊。诶啊,这粘的不够啊,从这粘一一直到到这儿啊CTRLC。这个在类的声明处呢,我们加了一个泛型,加上以后的话呢,你在后续的这个属性啊,在属性啊,乃至说在这个构造器当中,或者是这个方法当中,我们就可以使用这个类的泛型,当你实例化的时候呢,指明它是什么类型,属性,构造器、方法等等都是你指定的这个类型啊,这就是我们泛型的一个本质啊。那么泛型方法就是说,如果你在方法使用中呢,有一些不确定的一些类型,那么当我们调方法的时候呢,再指明你这个类型是什么,这呢我们就可以用叫泛型方法啊,把握这个核心的概念,那么有了泛型类以后,我们呢,可以去提供它的子类,那么开发中常见的关于此类这块呢,就有两种情况,第一种呢,就是我们直接呢,呃,创建一个子类呢,继承父类的时候,就顺便呢,把这个父类的泛型呢,就确定下来了,就固定下来了啊,这是一种情况啊,以它为例,那么固定下来此时呢,意味着我们的order,它就不再是一。
02:51
行类了,就只是一个普通的类。那那这个普通类想说它的一个意思是什么呢?就是如果大家在代码里面,代码里边你涉及到关于这个叫sub order的实例化的时候啊,比如这个o new,一个sub order,这个时候呢,要小心就是你还能在这个位置加上这个监控号,比我指明这是一个integer吗?还能行吗?就是这个类这样写的,我在代码,比如一个没方法中还能这样写代码不?
03:24
不能吧,这就错误了啊,因为呢,你不是一个泛型类,你不是泛型类,你加电话号干啥。哎,只有是泛型类或者泛型接口声明的是一个带泛型的,你才可以加上这个操作啊,所以这个的话呢,就是哎,实例化石啊,实例化石啊,那么如下的这个代码呢,就是错误的,嗯,这要注意一下啊,好,这是关于我们说的这个叫order,这是这样一种情况,还有一种呢,给他提供子类的方式,就是我们这个子类当中呢,没有明确说你这个父类是什么子类这块呢,定不下来,那就还仍然去保留这个T啊,还保留这个T,甚至呢,咱们PPT里边这不还让大家建了几种更丰富的情况,就是你保留的同时呢,还可以再加入一些新的返星参数。
04:14
哎,都是可以的啊行,这呢是典型的这两种情况下边呢,关于我们泛型类的一个测试,测试呢是写到。哎,写到这个里边了,哎在这。嗯,反应方法这个也在这儿啊,这我们把这几个呢就粘过来,大家呢去体会一下啊,这就行啊,哎,不用多说了,就这里边呢,这个代码从上往下走,你得能够看得懂啊,这呢,我们提到了一些注意点,上面已经有了,那么除了这个之外呢,还有其他的一些注意点,咱们这呢在PPT里边,呃,涉及到这边好几个啊。啊,这一到八,然后这呢是到这个12,那这个咱们上课呢,都带着大家走了一下啊,大家呢,就把这个呢还是过一下啊,就是还是不用去死记硬背了啊其实本质上来讲呢,呃,我我挺反对这个知识呢,去死记硬背的啊啊有一些基本的话呢,这个形上的一些东西。
05:11
形上也东西说,比如说非得这样去写,我们定义这个泛型类,泛型方法啊,要求呢,呃,在类的后边加上一个监括号,像这些呢,你肯定得死记硬背,因为它就这个规定,那这个规定完了以后呢,后续有一些这个知识点,其实都是基于这个规定来的,哎这些呢,你去理解,不要去死记硬背。啊好,这个呢,我们就过了啊,那么为了大家更好的去理解这个自定义发型类或者接口或发型方法,咱们呢,举了一个应用场景,这个呢就是后边咱们讲JDBC的时候,呃,咱们要定义的一个类叫做do,这个do呢,它呢是定义了一个,呃定义了什么呀?叫操作数据库中的哎表的一些通用操作,哎通用操作,那么通用操作无外乎呢,就是增删改长。
06:04
啊,就是这样的一个情况,所以呢,我们把这个通用的这个增删改查操作呢,就写到我们这个do里了,那么这个do为什么要加上一个泛型。为什么要加一个发型啊?因为呢,我们这里其实又提到一种思想啊,这个咱们在这个这个讲课的时候呢,稍微提过一下,这个叫OM的一个思想,简单的说一下啊,就是说我们让这个数据库中的这个表,它呢,哎和我们这个Java中的。哎,中的这个类呢,是不是有一个对应关系啊,哎,主要呢是这样个目的啊,我们呢,操作一个数据库中的表,咱们讲Java里边叫万事万物皆对象,这个呢,我翻来覆去的说,就只要呢,在我们Java层面去操作数据,都是以对象的方式是吧来去调的啊,这是咱们往后看,你要往前看就是浏览器了,浏览器里边呢,大家凡是你看到这样一对一对的标签,在我们这个Java里边呢,这都是一个一个的element了啊,一个元素一个元素的对象啊行,那么我们操作这个数据库中的表,想给这个表呢,去加一条数据,删一条数据,修改一条数据,相当于呢,你就是对Java中这个类加一条数据,就是加六个对象啊,这个删一条数据,把这个对象呢干掉啊,改一条这个表中的一条数据,就是相当于改类的一个属性啊,准确说应该对象的一个属性了啊,所以说呢,我们操作的你操作的表是通用的一些表了,所以我们这里边呢,希望这个。
07:37
类呢也是通用的类,杨爱迪呢,就不确定这个类到底是什么类啊,既然不确定发型,哎是这个原因,好,那么具体的话呢,我们说咱们是操作的,呃,上课举例子了。咱们操作的呢,是这个叫customers这个表,操作的是这个表,好,那我就让一个类呢,对应你这个表,咱们呢就造了一个叫customer deal,那我操作呢是这个叫呃,Student,呃,Exam student这个表,那我就在Java层面提供一个类叫做student类,哎,然后呢,对应的你刚才那张表有这种一一的对应关系啊,提到了这样一种思想哈,那么对应关系这块,既然呢,你上面是个通用的,咱们开发中肯定不会说,呃,就是用你这个通用的了,咱们呢会提供具体的一些do,哎,我们就这个样子的。
08:28
那么我继承这个do以后,这呢指明是customer,进而的话是里边的方法,凡是呢,你出现customer凡凡是出现这个原来T的位置就全部呢变成customer啊,下边这个student呢,也同样的道理。哎,这个我们的这个使用情境呢,就是这样子的啊,应该呢是比较好理解了,那么后续呢,咱们涉及到关于使用Java操作数据库的时候呢,再把这个里边的代码,哎,再去丰富,现在呢,咱们没有写啊,呃,真正写的话呢,那就是GDBC的知识了,哎,怎么写个代码,这呢,你整了个对象,然后呢,让那个对象呢,确实呢,把数据添加到咱们数据库中的表了,哎,这就是后边GDBC要讲的啊,这个我们都空着这个方法体了啊好过了,那么再下面呢,涉及到泛型在继承上的体现,这个其实比较简单,就是一个小知识点。
09:25
嗯,其实就这两行啊就完事,那只是说呢,我们下边呢,就给大家再稍微多写了几个事儿啊,CTRLCL一下。嗯,只需要呢,记住这个问题,这两是两个不同的类,没有继承关系,不能这样赋值就完了,哎,就完了啊,那么这边又多说一句的话呢,就是说这样是可以的,左边呢是一个负类,右边呢,右的是一个,呃,其实咱们这个也不是,也就就这样呗,咱们不是也经常写吗?这是OK的啊,就是你别考虑说这个监括号里边它俩有此负类关系,那那不行啊,你这个类本身呢,由此汇类关系是可以的。
10:08
哎,这个呢是允许的,这是对的,上面呢这个是错的,哎,就是你把这个LIST2付给LIST1,这是错的。没了,这有一个知识点啊,然后接下来的话呢,我们就想说说你这里边儿的这个类。和这个类说他们有没有一个所谓的负类一样啊,哎,能够方便的让咱们定义一个方法,这个方法的话呢,我就只需要写一个哎副类这个类型就可以了,这样的话呢,咱们又可以去用多肽了,都能往里放,这呢就说你把这个类型这块呢擦除掉,换成是一个叫通配符就可以了,这呢就提到了同配符。关于它的一个基本使用,哎,这咱们在下边这么写了。啊,基本使用啊,基本使用这个说啊这个把这个呢,下边这个也粘过来吧,CTRLC一下。
11:02
哎,这个把这二就去了啊,就这样个点,它呢,就作为咱们它和它的这个算是负类出现的就行了啊没多难,那需要大家注意的就是咱们以这个集合为例啊,以集合为例,就是当我们这个声明的是一个这种通位符的这样的一个集合的时候呢,我们写入数据的时候啊,有一些要求,然后读数据的时候呢,呃,也有些要求。啊,范围来讲,就是因为你写的是一个不确定的类型,所以呢,是不是就没办法往里写了啊,但是你要读的话呢,是可以读的,嗯,就反正你读的时候,虽然我不确定你是什么类型,但是呢,大家既然是一个对象了,集合里边咱们艾特的都是对象哈,那大家呢,都可以声明为object类型,所以读是可以的啊写的话呢,不行,那写的话呢,我们就说对象呢,大家都可以取之为no,那不妨呢,我们说no是可以at的,哎,这样就完了啊,那再往后的话呢,提到一个啊,这个读取和写入这个我们就给它这个混到一起了啊。
12:10
哎,这个我们直接写建商,哎这样子啊,这个代码我就不不拿出来了,再接着我们提到一个叫有限制条件的一个通配符的使用。啊,就是我们在这个开发当中呢,是有可能见到这样的情况的啊,所以我们的把这个知识点呢,给大家又介绍了一下啊,包括呢,在有的这个笔试题当中,有的时候呢,它就这样出现了,说一个占一个通背符CE或者要super,你得知道它是什么意思,哎得知道什么意思,就是我们说的这个事,下边呢,我们也举了一个例子,哎,CTRLC诶把这个呢,大家诶这个能明白就行了,哎就可以了啊成那么下边这边多说一句,就关于读数据和写数据这块啊这个咱们细节呢也都讲过了,哎这个就不多,不过多的再去在这说了啊行,这呢是咱们关于整个这个泛型哎这样的一些知识点啊浓缩一下的话呢,需要大家必须掌握的就是集合中用泛型,这个呢,涉及到的这个咱们早上考这五道题也考到了啊,要会写de这个事的话呢,现在先不着急,后边呢,我们写到这个do的时候呢,以它为例,哎,到那个时候呢,大家能够。
13:22
过去体会一下后边这个do这块啊,到时候呢能写就可以了,哎,这呢,其实就是两个小的知识点啊,没了啊。
我来说两句