00:00
那下边呢,还是老规矩,把我们上一次的讲的作业做一个简短的回顾,拿个五六分钟过一下啊,我们首先回忆一下我们上次课呢,呃,是讲到了哪个地方,从哪到哪啊,我们来一起看看看视频,我们从第四个视频看到我们上次课是从方法讲到了o op,我们简单过一下,打开笔记,方法呢,我们是从这开始说的,诶,方法,嗯,关于方法这个概念呢,说了啊如本质,从本质的角度来看,方法和函数是一个意思。啊,只是在你使用的过程中,你如果用到函数式编程,那它就变成函数了,如果你是op呢,它仍然是方法,这个就不再多说,方法和函数的定义,包括运行的机制,包括它的细节都是一样的,没毛病。那紧接着呢,我们又讲了一下构造器,这个是个重点。我找一个同学回答一下构造器你是怎么理解的,就是老师,比如说将来有个面试官问你说,诶你学过SC没有,说我学过,那你谈谈你对构造器就卡的构造器的一个理解。
01:12
当然,这样一问,你可能会觉得不知道怎么回答。那人家就是要问你啊。人家就是要问你啊,比如说将来你学的Spark学完了过后,人家问你觉得Spark是什么。你一下就蒙圈了。人家就要问你这个问题,再比如说你说呃,你你说你们学那个,呃卡夫卡学完了,你说卡夫卡和这卡夫卡在整个这个大数据生态体系处在什么位置,它的作用是什么?你在什么地方用过,注意事项是什么对吧?好,那我找一个同学来聊聊你对这个卡的构造器。你是怎么理解的啊,你怎么理解的,或者说怎么怎么去使用它,好,我随机的找一位同解啊,那么我们找一位同学叫做罗晋同学来回答一下,找一个女生来。
02:01
构造期你是怎么理解的呀,开。啊,非常好,把这个点答上来了。然后,然后呢。嗯,辅助够到期呢。好好的请坐下啊,可以大体呢,他把一个核心点答出来了,但是还是显得不够,就是那个套路还不够啊,我我给大家回答一下,就是当面试官问你一个知识点的时候呢,你可以这样去切入,注意听这句话啊,因为突然下一个定义是很难的。所以说一般来讲,我们在面试的时候,别人问你这个点呢,你要考虑到他的目的是什么,一般来讲面试官问你一个知识点怎么理解的它其实事项问你什么呢?就是在你做项目的时候怎么用,以及注意事项,所以说你就干脆从这个地方切入,比如说我要回答这个构造器,我会怎么说呢?我说我会这样说,我说呃,就是当我们在去SC里面创建一个对象时。
03:13
我们需要在创建时直接直接给他指定一些属性,我们就会用到构造器,你看这个点就打上来,说什么时候用好,用完了过后呢,你再说说说一下注意事项,你说在用的时候呢,我们要注意,呃,跟Java不一样的地方就是它有主构造器和辅助构造器。然后呢,主构造器呢,是在我们这个类名后面声明的,然后呢,辅助构造器呢,它是用Z关键字来进行这个区分,这是第二点,然后呢,你可以再说一下主构造器用的方法呢,它会把我们内体里面的方法和我们变量定义都要执行一遍,这个是它一个特色。然后再谈,如果说同学们再想深入一下,可以说我在做项目的时候还遇到一个什么一个情况,诶当时我们怎么解决的就更好了,当然我这个是一个知识点这样切的啊,比如说你们将来做项目,别人问你处理一个大数据。
04:07
这个这个优化的时候,你也可以按这种方式切入,大体就这样做好,然后呢,我们又讲了这个属性高级部分,这就不再多说了啊,属性高级部分就是V和VR的一个区别,那么嗯,有如果面试官问你这个问题啊。就是这两者有什么区别?你们想一想啊,比如说我这里有个class。呃,有个dog。Dog,然后呢,呃,比如说我这里有一个age in,好,我是这样写的,然后呢,我又有一个DOG2。DO2,那么这边写的是va in。好,然后呢,我又写了一个类dog。DOG3。好,Va。
05:00
Age in,大家看这三者有什么区别没有啊?有区别吧,第一个是表示什么意思啊,表示这个A级是一个什么,它就是一个局部变量,用完就完了。其实说白了就是参数,就是一个参数,那么这个是是不是就代表它会在我们这个do里面生成一个只读的属性,对吧,这个会生成一个可读性的属性,好,这点大家一定要注意啊啊OK,这个呢,我们就把这个过了。好,紧接着呢,我们呃又讲了一个SC对象构建的一个流程,那么我这里写了1234,尤其要注意第三点啊,第三点就是说呃,我们去构建一个对象的时候呢,其实它里面隐藏了一个副类构造器和主副类的,它会首先去调它副类的构造器。那今天我们在讲继承的时候,还要说这个事。
06:00
啊,先把副类的这边构造完了,然后再去构造我们这个本本身的这个类的这这些属性OK好然后呢,我们紧接着又讲什么内容了,看一下我们讲了包啊,讲了包包里面的内容特别的多。包里面的内容特别多,那么我们回忆一下这个包是干什么的啊,注意听,嗯,包在这个SC里面呢,它显得尤为的强大。体现在具体体现在什么地方呢?我感觉啊,它主要体现在这么几点,第一点呢,就是它在一个文件里边,它在一个文件里面就可以同时创建多个包,而且在这个包里面呢,可以直接在这个,在这个文件里面,直接可可以给每一个包创建自己的内容,比如说类,比如说treat,比如说这个,我们所说的这个像做呃,Treat treat方法,呃没没有呃类object object class和这个。
07:03
那就直接写,就是一个文件,可以把很多东西全部搞定。好,然后呢,还有一点就是包还引引出了一个新的一个技术叫包对象,那么包对象它是干什么的呢?对,包对象它主要的作用,它是为了弥补,就是你这个包里面不能去定义或者声明方法和变量而产生的一个新的一个弥补的一个东西。那么同学们,如果面试官问你为什么在给一个包写的一个包对象,我们包就可以去引用包对象里面的变量或者方法,应该怎么回答?是不是我在上一次课给你们分析了一下他底层的一个实现机制,还记得吗?哎,那个东西一定要回答上来啊,有些面试官他喜欢较较劲,他就想问一下你是怎么就能用上的,好,当时呢,我是在这里给他说的很清晰的,我在这里面讲了,从这面讲了很多,我在这里讲了一个包对象的底层实现机制。
08:06
你明白就说当我们创建一个包对象购物,它会生成两个类,一个package和一个pack Dollar,那我问大家一个问题啊,我问大家一个问题。那么是不是每个包对象我问一下啊,呃,我在这个包写了一个包对象,我在另外一个包又写了一个包对象,他们在底层生成的这个类名是不是都是这个名字,绝对都是啊,绝对,因为你一个包下面有一个包对象,那我拍和拍当然是可以区分的嘛。你在另外一个包又写了一个包对象,它还是生成package和package Dollar好,这点大家清晰,那么最终它是怎么用的呢?其实底层还是引用到一个static的,就是它底层去,他在底层里面就像这个看了。是他同一个包的应用,它在调的时候仍然是package,我我应我这写package啊呃。
09:01
呃,这个地方我应该是就是这样调的,是调package Dollar点猫里面的一个方法去完成的,啊下面呢,这个线就写的很清晰了,拍给dollar.mo dollar.c hi v,同学们在学的时候你们要特别留心这个家伙,这个东西在这里面其实是非常重要的,包括今天我们去讲这些这个。伴生对象的时候,这个东西是特别的关键,其实开里面实现这个静态,实现这个单利,它的核心就是靠它。你看他就是靠它来实现的,好,这里面的这个底层呢,我就不再一个个的再去说了,好那么包对象里面内容特别的多,我讲了14个点,那我现在呢,也没有时间再一个个念一遍了啊好,紧接着呢,我们讲了包包的可见性,那我现在问大家,在SC里面,我们这个控制访问修饰符统共有几种。
10:04
统共有几种?统共有几种?好,同学们,同学们,我们来把这个再搂一圈,搂一圈上我们做做一个回顾,还写到这里啊,同学们,我们写一个简单的案例,再来搂一圈,好,Exer ci05。好,同学们注意听,这也是他的一个特色,昨天呢,我在讲的时候可能没有把这个东西点出来,现在我再把它点一下,比如说我这里写了一个,写了一个monster的一个对象。好的,那现在呢,我首先写一个age,注意听啊,同学们啊,那现在呢,我写一个int,给他一个一没毛病初始化吗?然后呢,我给他一个私有的private来看东西,私有的age name是最类型,给他一个空串。
11:02
好,给他一个中转,这忘写一个东西了啊,因为现在我研究的是他的访问修饰符,所以说VR呢,这个VR和VR我就不去讨论了,我再写一个protected。Protected,我再写一个,各位朋友注意听这点特别的有意思啊,然后我们再写一个叫做叫做他的薪水,薪水呢,我们来个double型的,来0.0各位,我现在呢,给大家运行一下,各位注意听精华就在这个地方啊,我们运行一下。那运行完了以后呢,我们重点来关注一下这个monster,我们看看它是什么,首先。有一点明确下来啊,Public在这是不能写的了,Public不不不要再像以前那个,呃,就是这么说,我有我有个public不行的啊,没没有public这个关键词了,也不支持,那现在呢,我给同学们再把这个打开看一下。我们看看这个monster里面一共构建出来了几种属性。打开它走。
12:04
OK,请看,全是室友。全是石油,很快,那也就是说,那也就是说,实际上对于我们这一个,你看你你们看这个。Age,这个age是个私有的,也是私有的,包括我们写的product,它仍然是私有的。他人是有的,那sal里面我们看看这地方是什么呢?Salary。Public的,哎,同学们有没有发现在刊里面,他把这个可见性其实做了简化了。哎,我问大家一个问题啊,同学们,你们在学Java的时候,老师一定讲过,我们有public,有默认,有protect,有私有的,有四种,其实你们仔细想一想。有必要有四种吗?其实完全没有必要。因为对于这个我们我们这个语言来讲,你的这个和o op里面核心就是封装性,封装性其实就是两个逻辑,在斯卡拉这个设计者来看,他就只有只有两个逻辑,要么能够被外界访问,要么不能被访问,其实就这两个逻辑,你设计一个默认和一个protecting本身是没有意义的,他认为。
13:16
大家理解他的这个意思吗?说你你看你们在以前做封装,你你要么就是公开可以让别人访问,要么就是不能访问吗?就是这两个逻辑,何必要要搞四种呢,显得很繁琐,所以说开设计者,其实他这做了什么电况呢?我把你全部搞成私有,我不管你什么属性,全是私有,但是呢,有一点,如果你能够让别人访问,我就给你提供public方法,如果你不能让他访问,我就是私有的,就这个逻辑就完了。做了简化。当然这里面一个protected里面呢,这个继承里面还有点东西,我只现在只说这个访问属性,也就是说以后大家就记住在Java,在SC里面,它的访问控制只有两种,一个是public,一个是private没有了。
14:04
而且确实也是这样子,你看你你们仔细想一想,你们写你们写的这个代码里边啊,仔细想一想,你们在大量写这个框架或者写项目里面,你真的用过默认的吗?你用过protecting吗?其实用的非常的少,几乎没有,至少我以前写代码,我我我们写的很多代码里面,要么就是私有就就就封装起来,要么就public布让别人用没有了。其实很少用到protected,很少也很少用到那个默认的,因此干设计的直接将其拿掉,好,讲到这呢,我就多说一句啊,讲到这多说一句,大家注意他的一种简化思路,他为什么要这么干,要为什么要这么干?就是他认为没有必要搞那么复杂。好,这是可见性,那报道引入的方式老师就不再一个念了啊包的引入方式有很多。好,然后呢,我们讲了抽象面向对象,抽象的是一种研究问题的方法,知道这个就行了,比如说别人问你,呃,曾经啊,我说一句话,曾经,曾经在我们那个时代学面向对象的时候呢,甚至有人提出过面向对象有四个特征。
15:13
啊,曾经那比较早了,后面把这个就拿掉了,曾经有人说是是四个特点,是第一个面向对象,有抽象的概念,有封装,有继承,有多肽,后面发现这个抽象的是一种研究问题的方法,就把它彻底的去掉了。啊,其实这个抽象也是我们面向对象的一种研究问题的方法,但是呢,后面把它排出去了,你们你们将来可以在网上搜一搜啊,有有人说面向对象四大特征,那个里面就有抽象,只是后面把这个觉得没有必要把它归进去,就把它拿掉了,后面主主流的那个看法呢,就是这个学学术这里边啊,就说只有三种啊这么一个逻辑,好,那么抽象这个实际上我们就说是这么来的,那下面讲的我们面向对象里面讲的这个封装啊,体现封装快速入门,这是我们上次课说的好的,同学们那关于。
16:08
温故知新,我们就聊到这里。
我来说两句