00:00
各位同学大家好,刚才呢,咱们演示了根据类型霍取病有一个特别需要注意的地方,那下面呢,我们在演示下一个内容,下一个内容是什么呢?给大家做个说明,我在图里先来画一下,然后咱们用效果做个演示,什么效果呢?我来说明啊,比如说咱们一会呢,我先建一个inter,就是如说的接我就这个do,这接口是一个interface。这个咱一会儿自个创建,我这里就简写了啊,咱们建一个接口,然后建完接口之后,大家应该明确啊,这个接口是不是有对应的实限类啊,因为你要明确咱们建个interface这个接口肯定不能你要找到接口对应的实类,那比如说我现在啊,我写第一个实现类,就是实现类一。啊,实现类一,假如说啊,这个实现类我就叫user do PL,然后让它呢,就是实现我们这个接口,我这就前写啊实现这个接口,这是一个实验类,那这个时候我这里要演示什么呢?比如咱们一会儿再获取B的时候,我就直接用这个接口类型,它是否能找到对应的实验类对象啊就是演示这个它就类似于什么呢?比如说最原始代什码,各位都知道,我们可以这么来写UDAO。
01:30
这是一个接口,等于new它的什么,是不是它这个实现类的对象,这咱要得到的就这个效果,咱就验证一下根据类型,是否能根据接口类型得到它对应的实验类对象啊,这是咱们一会儿演示的第一个效果,给咱一会儿马上来说,然后里边还有第二个效果,比如咱们一会儿啊。因为大家知道我们Java里边类是单继承的。也就是说一个类只能继承另外的一个类,但是它的接口是不是可以多实现,包括一个接口中是不是可以有多个实现类,比如咱们一块儿写第一个实验类,我在这里边呢,再写第二个实验类,咱让他写多个实验类,而这里边咱一会儿演示,当我一个接口中有多个实验类的时候,那我用这种方式是不是能得到它的这个对象啊,咱就演示这两个内容。
02:24
包括大家看我看中写到的啊,如果组建实验类,实验了接口,那根据接口类型是否可以得到B,如果一个接口有多个实验类,那它是否能得到这个B,咱就演示两种方式,也就是说简单来说,一个接口有一个实验类是否能得到,有个实验类是否能得到这个B,咱就演示这个内容。那下面呢,给各位直接来演示一下啊,如果这个过程没听明白,那咱们看效果各位就更好理解,咱们直接看一下。首先第一个啊,为了咱们操作方便,我在里面建个包就叫做B。
03:04
然后在B里边呢,我先建个interface接口,咱们起个名字就叫user DA一个接口,然后建完接口之后,在里边我先创建第一个实验类,咱们叫user do ML。让它实现这个接口user do,这是我们做的一个实现,所以咱们现在把这个我们就完成,然后完成之后下面咱做个测试,就看一下根据接口类型能不能得到它的实验类的对象,那怎么做呢?咱们来到配置文件中,我们这里边做一个配置。我写到这里啊。给大家加个注释啊,这是第一种方式,我们那个获取的这个演示。然后第二个咱们就演示里边这个。
04:00
啊,一个接口,它那个实现类的这个获取的过程,那咱们在里边做个配置,我来写一下啊,加上个B。ID。加上class属性。就是咱之前写过的啊,然后在class里边写什么呢?各位注意啊,接口肯定不能咱要的话是不是实验类对象,所以咱把这实验类的对象在里面做个配置,就类似于我刚才写的这个代码,接口等于它的实验类的对象,所以咱把它实验类的对象在里边做个配置,我这里边配置一下。点上user do PL,然后给它起个名字,这名字随便起啊,我就叫user do啊,或者说你看到如果看着不明确,那咱叫u Du PL。这是我们写的这个过程,然后写完之后下面呢,我们写个测试类,根据接口类型来得到你这个实验类的对象,看能不能得到啊。
05:06
U do。在里边我们加上一个测试方法,前面跟之前都一样,Application contest等于上一个pass这个配置文件加上B点叉买,然后加上之后注意啊,根据类型获取接口对应的那个B,或者说接口实验类的对象。我们加个t.get b类啊,如果你根据名字那肯定能得到,那肯定没得说咱类型得到,然后类型怎么写呢的写法。DAO点,而你不要写实类,你要这么写肯定可以得到,咱就根据接口看他能不能找到对应的实现类对象,然后最终它返回这个叫user do,咱把它做个输出。
06:01
右侧Du啊,包括为了效果明确啊,我这么来做,我在里边写个方法,为了做个测试public这个方法我就这个。这个方法。啊,这里边啊是一个定义。在里边定一个方法,然后在实现类中把这方法咱们给它快速做个实现,做个输出,就为了咱们测试更加的方便。现在这就可以了,可以之后咱们做一个调用。如果说能输出证明对象肯定就得到了,那下面呢,把这个咱们执行一下,看它的效果,根据接口类型能否得到这一对象。然后大家看啊,这个输出很明确啊,前面是加载配置文件这个过程啊,然后你看这里啊,你看这句话。这个输出得到的是不是就是u do实验类对象,包括咱们的乱方法是不是也执行了,这就验证了我们说的第一句话。
07:05
如果组件类实现了接口,根据接口类型可以得到它的B,也就是接口等于实验类的对象。这个咱就完成了啊,然后咱们再演示第二个就是一个接口可以有多个实验类。比如现在啊,我在里边。我再写个实验类,咱为了区分啊,我就叫person。DAO。Ipl啊,为了区分一下,给他改个名字,然后让他也实现这个接口,包括里边有这个方法。啊,咱给他也做一个实验,方法中我做个输出就叫person。现在就可以了啊,可以之后咱把这个对象在B里边,我们也做一个配置,因为配置跟上面类似,我就直接复制了啊,咱给他快速配置一下。
08:00
跟他因为类似,我就直接复制了。然后这里边改成我们现在这个新的这个名字叫ho DOL。包括这个ID啊给他。改个名字啊,改成他。Person。所以现在完成,然后大家看啊,我现在这个接口它有两个实现类,比如说咱们这么来看,你看啊,有两实现类,一个叫user Du,一个叫person Du,两类对象我在里边都做了配置,这个时候咱们再测试看它什么样的效果。啊,咱们再做个测试,看最终结果。然后大家看啊,这里是不是就报错了,报的什么错,是不是就是刚才我我们看到这个错误,因为现在啊,你一个接口有两个实验类对象,如果说你根据接口类型找对象,那他就找不到了,他就不知道你开始找他还是找他,因为这两个都是他的对象。
09:05
这个啊,是咱们说明这个问题,比如说这里边课件中的第二段话,这段话如果一个接口有多个实验类,那这些实验类都配置了B,那根据接口类型就不能得到你这个B,因为你的B不唯一,就是一个接口你有多个对象。这个就说这啊,然后它的层呢,其实用的就是这个行类型,它就是判断你这个。前面的对象是否是后面的类或者子类或者实现类的实例啊,用它判断,如果是true或者是false。在这个各位把这个记住啊,我最后重复一遍,就是根据类型获取的时候,你的B必是唯一,比如说你的接口不能有多个实验的对象,如果你有多个实验的对象,那你要用别的方式获取,如果你用类型获取,它的bin也是唯一,不唯一它就获取不到,就是刚才咱们演示这个问题,最终他就出了一个错误。
10:04
所以这个啊,咱们把获取bin的方式给各位就演示到这里。
我来说两句