00:00
那下面呢,我们就来对什么呀,我们就就来对上一次课做的讲解的内容呢,进行一个简短的回顾,好我们来看看上次课我们讲了哪些内容,好我们回忆一下。呃,上一次课我们是从哪里开始讲的呢?首先打开我们上一次课的录制的视频看一下,上一次课我们是从动态混入讲到了影视转换这些内容,那打开我们笔记。给他先标记到二,我们往下拉,诶我们讲到是从动态混入开始讲的,那就是从这。哎,从特质的动态混入这里,那么这一这个地方我们做一个简短回顾,我们先回忆一下哈,就是这个特质动态混入它的一个使用方式,比如它的基本语法呢,大家要了解一下,就是这个地方要做一个了解哈,呃,语法大家要做一个了解是哪里呢?就这它的基本语法。
01:04
诶,动态混入的基本语法是这样子的。啊,这样子的,对啊,那么就是我们六了一个对象的时候呢,我们直接用V字的这个关键字,将我们需要的这种混入的特质呢混进去,如果有多个要混入多个呢,你后面继续写位置,然后写上其他的这个特质即可,非常简单。啊,非常简单,那么这个动态混入它有什么好处呢?咱们回忆一下动态混入的好处就是它可以实现这种叫做OCP的这么一个原则,啊原则什么原则啊,就是OCP就是开闭原则,就是我在用动态混入的方式给一个对象增加功能时,我并不会去影响这个类的本身,而这种就是特别好的一种方式了。
02:00
这是动态混入的一种最基本的一个原则和一个规则,把这个动态混入讲完了过后呢,我们讲了一个叠加特质,我们回忆一下叠加特质是一个什么概念,哎,我们先不看笔记。听这个名字就知道了,叠加特质就是我们混入的时候呢,有多个特质,那么一旦出现我们要混入多个特征呢,就有很多语法规则需要我们去遵守,这里面有两个规则特别的重要。第一个。我们在混入的时候,那么这个对象的构,它的构建顺序是什么样子的?第二个当叠加特质以后,我们去执行这个叠加过后产生的对象的一个方法时,它的执行方法又是什么样子的?这个呢一定是一个考点,就是说也是我们将来看一些源代码的一个核心点。因为将来你们看Spark的源代码,或者看一些用SC写的这种框架呢,你们一定会涉及到叠加特质,那么我们一起回忆一下当时老师怎么讲的叠加特质,它的这个构建顺序啊。
03:15
我找一个同学来说一下叠加特质的时候,它构建一个对象的顺序是什么样子的,它执行一个方法的顺序又是什么样子的,那么在这里面用到了一个super关键字,它又是什么样子的?好,我随机的抽查一位朋友。好,我们找一位这个。女生啊,我们找一个女生叫杨红娟同学来回答一下。来,呃,请假了是吧,请假了我们再找一位男生来回答一下,叫王双喜同学来回答一下,来双喜。就是。
04:00
从左往右对不对?呃,在这个构建过程中,它仍然遵循这种,就是如果构建的时候混入特质时,那个特质还有负特质,是不是也要往上追是吧,好执行呢。从右往左,那么在执行过程中,如果遇到了有super这个关键字,它的规则是什么样子的?啊对,那如果左边没有了,过后,他这个书指的是什么呢。对,然后如果说在这个过程中,我我就想让这个super直接指向我的副特制,我怎么做。我可以做这个动作吗?就是。比如说我就想让这个super指向我的复特制,有没有方法?当时讲了一个点,就在super后面加一个,加一个中括号里面写上什么。它副特制的那个名称对吧。啊,应该还有印象啊,请坐下,还是可以的,他把最基本的答上来了,只是有一个小细节呢,啊,有点我忘遗忘了,好,没关系,没关系,那么当时整个这个流程说的是没问题的,只是里面有一个小细节,就是这,如果我们想调用具体特质的方法,用super加一个特质啊,这个特质呢,就是。
05:21
他这个这个泛型就是他该类型的直接操那类型就可以了。好,紧接着我们讲了特质的具体字段,抽象字段特质构建顺序啊,如果这里面你在你在进行这个混入时,它本身这个对象。它本身首先混入的这个类,也也有这个构构造器的时候呢,要注意这个顺序。那我在这讲的时候呢,呃,我把这第一种和第二种我都做了一个介绍,这里面主要的区分是在哪里呢?就第一种。声明内的同时混入特质和。
06:03
在构建对象时,动态混入特质最大的一个区别在哪里呢?就是我们生命内的同时混入一个特质呢,它是先是把这个当成一个整体,就是在混入的时候,这个对象本身并没有创建成功。哎,所以它是整体按照这个混入的,就是生命的这个混入顺序,一步一步往上去这个构建的,那么这个。在构建对象时混入呢,其实我们可以理解成是先把这个对象创建起来以后再逐一的混入,我们的特质是这样子吧,哎,这样子呢,就比较好理解它的一个流程了。好,紧接着呢,我们又讲了扩展类的特质。啊,扩展类的特质其实很简单,就是刚才我们做的这个题呢,也体现出来一种扩展啊类的特质,就说我一个特质可以去继承。
07:02
另外一个类对另外一个类,然后呢,我这个特质就可以去用我继承的这个类里面的方法,相当于去干什么呢?扩展了我这个treat的一个功能,在我扩展了这个功能以后呢,我用混入的方式混入这个特质时,那么我的这个对象也就拥有了相应的功能,好,这句话就是我们所说的叫扩展类的特质。好,紧接着讲自身类型啊,支身类型呢,大家做做一个了解就行了,好紧接着我们讲了嵌套类,嵌套类呢,你们将来这个更多的情况可能是看源码会用到,一般情况下,我们在自己做开发的时候呢,一般应当尽量避免使用到嵌套类,实际上如果你真的用到这个嵌套类了,那说明你这个水平已经比较高了,就是你看你现在做这个Java开发,其实你很少用到类不类,对吧,这个可能更多的是用来干什么呢?一个是看源码,就是有些高手呢,他会用这个嵌托类来优化。
08:09
因为嵌套类有它的一些特色,第二个呢,就是可能在面试的时候,有面试官会问一下,诶,他说你学过SC了,那么请问SC里面嵌套类跟Java有什么区别没有,其实我在当时讲了区别主要是有这么,呃,有这么两点,第一个呢,就是嵌套类它的这个对象。是跟外部对象相关的,对外部相关的,那么跟Java不一样,Java呢,它这个,呃,你创建一个内部类的对象,它只跟这个内部类类型有关系,但是在我们看里面,同学们可以看到我在这写了一句话啊,我在这写了一句话,就这么一个东西,我说SKY内部类的创建方式跟Java不一样,它是将六放在前面,让对象点内部类的方式来创建,那说明他这个创建一个。
09:04
就是我们叫做内部类也好,叫做嵌套类也好,它其实是跟外部这个对象呢有密切关系,但Java不是这样子的,Java其实呢,它只跟这个内部类型有关系,那么这样就直接导致了一个问题,导致一个什么问题呢?就是说我们怎么去解决这个问题,那在scan里面呢,它使用了一个叫做什么呀类型投影来解决这个问题。那类型投影它是怎么做的呢?也非常简单,其实语法特简单,就一句话就搞定了,怎么呢?前面加上这一个外部类的名称,然后加一个井号,再写上你的内部类的名称,这样呢我们就称之为类型投影,类型投影最大的价值就是作,它的作用就是屏蔽外部对象对内内部类的这个类型的一个影响。好,这个呢,就是我们讲的这个知识点,紧接着后面呢,我们就讲了一堆,像这个影视转换啊影视呃转换丰富类库,影视值,还有呢,就是影视类,还有影视转换时机解析机制等等。
10:14
那么这个影视转换呢,其实特别的有用啊,尤其是在我们看一些代码的时候,你会突然发现,诶,为什么我传了一个这样的词进去,它莫名其妙的就可以通过呢?其实就是类影视转换在这里起了很大的作用,那具体来说,影视转换并不是空穴来风哈,就是你比如说你看我在这里写了一个这样的语句。我把3.5给了一个int,然后我在这写了一个隐私转换的函数,隐私函数,那么大家不要看到这句话说,诶怎么就写这写了一个函数,那么这个3.5就可以给一个特呢,其实底层他帮我们做了很多的工作,就说他一定是把这一个隐视函数作用在了这个地方。
11:03
因此同学们呢,如果要将来看些源代码,就是在有些地方你看不懂的时候,可以反编译看一下。而且有一个地方一定要提醒大家,就是在我们IDE里面呢,他也做的很聪明,就是idea里面呢,有一个特色,只要将来你看到有这种下划线的。就是你发现有个下那个,那个就是实线的下划线,那么一定会出现了隐私转换。所以说这个ID工具呢,还是做的很牛逼的,就杰克的这个idea,这个杰克杰克发,呃这个呃设计就是。出版的这个开发工具,我觉得还是挺牛逼的啊,还是挺好的,一个一个一款工具,好,他给我们很多的提示信息,好了,那么关于影视转换的具体内容呢,我就不再一个一个的说了哈,一个一个说我就不再多说了,好的,那么我们温故知新呢,就先简单的给大家介绍到这里。
我来说两句