00:00
好,他有还有好多内容,这个接口内容比较多,因为它是啊这个特质内容比较多,因因为它这个是他的一个重点,那我们看一下下一个。好,下面呢,我们来看第一个啊特质的,再说明skyla提供了特质以后,特质可以同时拥有抽象方法和具体方法。那么一个类可以实现和集成多个特质。就是说我们一个特质呢,既可以拥有抽象方法,也可以拥有具体方法。这就有点麻烦了,我这地方要讲的是什么呀,同学们,这个案例其实特别重要,因为我想给大家讲一下,就是当我们一个特质。只有抽象方法和又有抽象法,又有具体方法,我们一个特征会在底层对应什么样的东西,它们之间又是怎么调用的,这个案例呢,可能会稍微的花一点点时间啊,可能会需要至少十分钟才能讲完。
01:00
好,那我现在把这个题好好的说一下啊,因为这里面涉及到一个底,就是一个一个特质的一个底层的一个原理,它的调用的一个原理,好我我把这个呢给大家整理一下。好特质的再说明,来吧,把这个案例快速的给大家走一下。好,这是特殊在说明,那么我这里已经设计好了一个案例,我我参考一下这个案例是怎么写的啊,因为案例太多,有时候我也记不住。我看一下当时是怎么设计的啊,设计这个trade的零二有个COK啊,有一个抽象的方法,有一个实践的好的方法,然后呢,我让AA去继承了这个继,呃继继承的一个特质,然后调用在这里调用了一下,还写了一个匿名的,好,我明白了啊,大体我知道,我们现在来开始写这个玩意。好,谢谢。好,写一个吧。DEMO03好通这个这个案例呢,我们可以把它的一些原理讲清楚了。
02:00
好,首先呢,我们先写一个treat看清楚啊,那么我们就直接叫treat。零三。203。好,写完里面呢,我我写两个啊,我写两个方法,一个是抽象方法。啊不不是不抽风啊,抽象方法,抽象方法我就写一个这样的DFC。写完了。啊,谁还抽象方法,我们再写一个实现了的普通方法,普通方法,普通方法呢,普通方法也很简单,叫DEF,然后呢,C OK hello。那故意在里面写上1.c哈。好,其他我就不说了。呃,说老师你为什么要设计这样呢?因为这样子一写你就会看到有特点啊,它的特点就出来了,来看一下啊,我再写个OC哈CC哈,写完了,那现在呢,我再写一个类来继承它,比如说我写个class。
03:00
呃,比如说叫做这样一个类啊,比如说是叫做这个pig猫猪狗羊SP啊SP。呃,动物动物就没有没有没有要用光了都啊好继承去。好,T21303写完了,写完以后呢,大家看到这里面有一个方法,因为你没有实现,所以它会报错,因此我实现它一下。好,实现过后呢,我就写一句话就行了,我说这个小羊,小羊说亥,小羊C亥。小杨。损害。好,写完了,写完了,那么现在呢,我来给大家探讨一个话题啊,注意听这个地方我要探讨几个话题,第一个。第一个呢,我要在这里创建一只小羊啊,我要创建一只小羊创建对象。啊,创建一个对象,那就WERS。
04:03
等于六一个S。好的,然后呢,我们来调查一下点C汉。C hi,来我们看一下运行一下啊,现在c hi这个方法就会小羊c hi,当然你还可以写c hello。这个肯定都能泡起来,我运行一下。运行这段代码过呢,我们发现这个结果跟我们想的是一样的。对吧,诶小羊谁hello,现在我要看一下这个东西,两我要探讨这样一个话题,第一个。这到底发生什么事?这又发生什么事?好,把这个一讲,大家就彻底的明白了。来吧,首先我们先来看。呃呃,这样子啊,这样子,我稍微的改一点点,我先改一点点,大家先体验一下,我先把这个普通方法先删掉。我先把这个普通方法删掉,我再运行一下。因为这个地方有普通方法和没有普通方法,它的原理发生变化了,好,我先把这个普通方法先删掉了,我们打开底层的源码先看一下。
05:07
来走一个好,打开我们这个地方,我们是CHAPTER03啊。八案例里面有一个my treat my treat里面呢,有一个seem啊,有一个有一个这个东西,我们看一下这里。我们看一下这里。不是看这个C,而是看这个。看这个翠零三。零三有没有?看一下的零三果然是有一个的。而且大家看到只有一个。大家看这里面只有一个吹的零三看清楚了,点开它点开过后,其实你看它只有一个抽象方法,对不对,也就是说当你只有一个呃抽象方法,它这就有一个抽象方法,而且它仅仅是一个接口。那么这个是一个接口的时候,同学们可以看到在它这个地方,它的底层是怎么做的呢?就这个S这个类跟treat它是怎么关联起来的呢?同学们请看代码。
06:08
看到我们这个S。看这里哦,它跟我们以前Java完全一样。就说这个时候跟Java完全是一样的,就是说当我们这个treat里面只有抽象方法的时候,它跟我们Java的机制是完全一样,现在呢,我要做一点点改变,打开注意看。打开我们刚才注销的这个普通方法,这个设计的很有意思啊,你们待会儿看,你发现这个这个哥们特搞特有意思,你知道加完这个东西会怎么做吗?显然,你不可以把这个时间的方法放在接口了。因为既然你是实验方法,你再把它放到接口里面是不一不不对的,所以他搞了这样一件事情啊,当当一个脆层。有两有,有抽象方法和非抽象方法。使追听。
07:05
好,那么会怎么做呢?第一步。一个一个treat就会对在底层,在底层对应两个类。对应两个类,他每次都这么搞的,你看他现在已经形成一个套路了,每次都这么干,包对象也是这么干,办生对象也这么干,包括脆的他也是这么干,所以这个你看这个编译者,虽然这个人技术很牛,当他到一定程度,他也是一个套路是吧,他已经很牛了,但是他也是,你看我们现在已经分析出来他怎么做呢?第一个类。就他。这个实际上就是接口啊,这个就是一个接口。啊,这个就是一个接口没问题顶,接着呢,他还搞了一个什么呢。啊,他还搞了一个这个东西。还对应还对应。好,他还对应一个叫这个点Dollar。class.class。
08:00
然后这个是干什么呢?它会生成一个叫这个的抽象类。哎,注意听啊,这个是一个抽象类。然后大家知道抽象类是不是可以实验方法,那这个时候他把这个实验方法扔到这里面就没问题了啊,所以说这样子呢,它就有两个,一个是接口,一个抽象类。好一个是接口,它就把它分开了,它分开,它一旦分开过后,这边会变成什么东西呢?好的,当。这个接口当这个treat啊,当这个有有这个接口和抽象类似类。类类似它的底层就会对应什么呢?就这个加号的底层,它变成这个德行了。在这个就对应底层,在这个底层。在在底层它会变成这样子的,在底层它对应的是这个东西,对应我写到这里啊,对应。呃,对应什么呢?它是这样写的,Class。先继承。
09:02
你们知道他继承什么吗?先继承这个家伙。看到没有哦,他他不是这样子的啊,我我我说错了,我我说错了啊,他他没有没有继承这个,它就是直接它还是实现它还是直接实现这个接口。Employment它还是直接实现这个,呃,这这个这个接口。他还是实现这个接口。他就实现这个接口,但是里面的方法呢,注意听啊,对应这个,那么他在这个接口里面实现它过,它要用到这个treat里面的方法时,他直接用这个来使用。啊,直接用这里面的方法来使用,所以说他是这样写的,就是当在什么呢?当在这个she。当在这个SP。这个类中。啊,Z中。类中要使用要要要使用什么呢?这啊。要诶写错了。
10:00
要使用什么呢?要使用这个TREAT03的零三的这个实现的方法。方法就直接就就直接使用就使用了,就通过这个来调用。这个类的来调用,那么我们来看一下啊,大体是一个逻辑,那么现在呢,我把这个整理成了这么几点,第一点。第二点。好,第三点,好,同学们,现在我们来看一下,是不是跟老师分析的差不多啊,差不多来看一下。好,同学们,我们编译一把。编一把,把这个说完,我们这个事儿就算是过了啊。就是它的一个基本的原理,说好打开我们这个代码,那么现在我需要把它关闭一下,因为我不关闭呢,它不重新加载,所以说我要关闭一下,打开这个位置,同学们注意听。点击这里好的,各位,首先呢,我先来看老师刚才说的,第一个看这里脆的三是不是有两个,各位同学请看,没有乱说吧,第一个是接口。
11:05
是不接口,仍然是接口,是不是,它这边有两个方法,你看一个是c hi,一个是这个,虽然你说了是,诶那不对,你这个say hi say hello,不是还是抽象的吗?大家看到它这里虽然是抽象的,但是他把真正实现的方法扔到了这里。是不是这样?看到没有,他只是在他那个接口里面声明了一个方法,声明了一下而已,他说我这有个方法啊,但是在哪干的呢?真正实现了海防到这来了,看到没有,好,有了这个东西过后,我们再来看下一个这里。刚才老师说的哪一点呢?就这一点,诶他这一门到底是怎么玩的呢?诶你看一下啊,刚才我说的他仍然只去实现这个接口,然后他又用到了一个方法的时候,他直接用这个来来调的,我们看是不是这样子的,打开我们的这个位置,那这个应该看哪一个呢。应该看C。好,同学们,看到是不是只实现这个接口啊?
12:03
只实现这个接口,你看它这里,它实现这个接口的话,就意味它会把这个C,它会把这两个方方法都实现,但是你看啊,我们先看CC hi c hi是不是c hi看一下,注意听C是不是它自己实现的。哎,同学们c hi,是不是这个C自己实现的,是不是,你看这边是不是他自己自己搞了一把。诶,这个地方有点怪,周老师他怎么也把C哈实现了呢,其实他做了一个语法堂,你看他干什么事了,他自己把那个接口里面的c hello写过来过后,直接调用了零三.class一个反编译,拿到它的c hello来调用的,看到没有?看到这个逻辑了吧?他有点意思吧,这个他是怎么个做的,他就这样这样去玩的。你看它这个CC哈,其实还是从这过来的,但是你哈本身是不是一个抽象方法。
13:00
那那他怎么怎么玩的呢?他这样子,它相当于做了一个包装,说我虽然是有一个c hello,但是我真正实现了,仍然是用你自己实现的信号,你看这点进去。实际上还是自己这个里面写的,把它分开了,好这个逻辑我们就说完了,大家看看这块一定要把它理解一下啊,如果我们画一个示意图的话呢,也很好理解,如果画一个示意图就是这样一个图,好,我再画一个图,帮助大家理解一下啊,来同学们,我这个就画一次,就画一次啊,首先我们看这个东西它会对应什么。好朋友们。我先给大家放到这一栏。好,就写一个小块。好,同学们看这边呢,是我们的一段treat,呃,因为这里面有这个普通方法了,注意如果没有普通方法。没有普通方法就会只生成一个,就是那个接口好,如果有普通方法呢,它会对应生成两大块儿的内容,好,那简单看到这里第一个。
14:08
好,第一个呢,它会生成这个东西。就是这个所谓的纯的一个接口。诶,你看这个地方它会首先。生成一个这个东西。就它底层呢,会生成这么一个东西,紧接着呢,它还要生成一个抽象类。哎,仍然是抽象内是他。这里面呢,它会把那个实现的方法,就是你非抽象的那个那个方法放到这个抽象类里面去,那在哪里呢?诶同学们请看啊,在这里。Okay。OK,你看这就有了,也就说你这一个呢,在这个情况下,其实对应了两个文件。那么我怎么去用它呢?我怎么去用它呢?请看下一个代码,诶下一个代码说,哦,我这里有一个S。
15:06
这个C呢,干什么?我用到了你,他又怎么玩的呢?好,同学们请看下面代码。诶,好,我把这儿往下撩一下。聊一下哦,他怎么做的呢?哦,他说这样子。它在这个地方底层,它会这么来实现,打开我们的地方,对应我们这个猫啊,对应我这个这个这个羊,你看这。哦,他是这样干的。看到没有,他怎么做呢,他这样子做。他这样子做,把代码给大家拿过来啊,代码给他拿过来。就这段代码呢,它对应的是这个。那这个里面它是怎么来玩的呢?你看这就这个就这个文件啊,它对应的是它是吧,这大家应该能够一目了然。那么你这个东西跟它底层这两个怎么怎么怎么来怎么来实现的呢,首先他仍然去。
16:00
实现这个崔零三,所以在这呢,它一个实现的一个方法。好,这个地方因为时间的关系啊,我就这样简单的描,用这个图来来走了一下,换成一个颜色,那么我这写一个叫implement。啊,实现。好,实现了。那实现里面呢,你看这有两个方法,C hi和C哈,它怎么实现的呢?C hi hello,他做了一个包装,然后呢,它在实现的时候呢,他知道你已经有了。他知道你已经有了,因为他可以通过这个名字来进行关联,于是他在这用的时候呢,直接就去使用了。他这直接就使用了你这这个抽象类里面写的这个c hello。对,那么你自己写的这个c hi呢,这个C就是你这写的小羊c hi直接拿到这面来。好,这个关系我们就捋清楚了。啊,所以这样一看哦,真的我们一个出的的确就是接口加抽象类的一个组合体。
17:04
啊,一个组合体,好到此呢,我们这个分析就完毕了,好,同学们,我把这个代码给大家整理一下。好,这就说完了啊,同学们这个是。这个讲完后面好多东西你就你就好理解了,为什么这样,为什么那样,你一下就明白了,就是因为你把最底层的就搞清楚了,那语法怎么变,不就是一个就就是一个魔术嘛,对吧。好好,我把这个给同学们放到这里来,Very的easy啊,Very easy,所以你要你要看这个东西,你一定要看一下底层,不然的话,你看起来就感觉没有没有特别深刻的印象,好你说到底他怎么就实现这个东西呢?不清楚不明白,好我把这个代码呢给同学们绑到这来。各位,我给大家来一个表格,然后呢,我把这个对上面代码的一个分析的原理图拉过来,好,这是代码。我新建一个这样子写啊代码。
18:00
代码说明。OK,代码说明欧了,给他来一个小小的箭头。然后呢,这边我们再来说一下代码对应的示意图。上面代码。啊,上面代码。代码对代码对应的一个底层的,底层的一个分析啊分析图。好,也给大家放到这一栏。好了,我把这个呢也给大家截取一个小的。呃,一个一个图案好大,大致能够看出来就可以了啊,可能没有写写那么写的那么全。好,大家应该能看出来是一个什么样的原理。好,写到这欧了。好,这是我们的第一再说明的第一点,那么再说明还有两,还有这么两点呢,我们就把这说完哈。特质中没有实现的方法,就抽象方法讲过了,可以通过一来继成特质,V字继成多个刚才说过了,还有Java中所有的接口都可以当做SC特色来使用,好,这个刚才已经都讲过了,只是把它再总结到这就行了。
19:08
好,到此呢,我们这个关于特质的一个基本的说明啊,就说完了,我们截取一段视频,这下面这个两个案例我就不跑了啊,大家简单看一下,简单大家看一下这里这个案例,这个案例呢,这个案例是用来干什么呢?这个案例就是说我用来描述了一个继承多个特质的一个语法,比如说我有一个log。这个log我干什么呢?我有我有一个cons这个类,这个cons呢,我去实现了第一个。特质,我紧接着呢又去直接使用了我们Java里面的两个接口,因为Java里面接口可以直接当做开的特质使用,所以说我这里也是可以用的,我这里就讲了一个语法啊,讲了语法大家看一下就可以了,好把这个案例给放过来吧。啊,这个案例就是演示了什么呢?演示了一个类怎么去继承多个接口的使用语法好。
20:07
这演示了演示什么呢?啊,演示了,演示了一个类继承多个特质啊特质的语法。OK。啊,OK,给他拿过来。好,同学们,这是我们的一个小案例。好,那么呃,下面呢,这个我们这个特质内容还特别的多啊,还有这个什么叠加特质啊,什么特质中重写抽象方法呀等等等等,这个呢,我们今还有附接口啊等等,内容还很多哈,还有特质构造顺序,这个最有点麻烦,还有扩展特质等等,那么这些内容呢,我们放在明天去讲,说下今天的作业。啊,说一下这个作业。像截段视频。
我来说两句