00:00
那下面呢,我们来看看SC的包的可见性,呃,做一个简单比较,大家一看就知道了,呃,SC的包的可见性呢,它。对,跟Java来比有一点区别,有一点区别啊呃,首先Java呢,它有四种,在SC中呢,它也可以通过修饰符达到同一效果,但使用上有区别,我这里已经写好了一个案例,我就不再敲了,我直接拿过来。我直接拿过来了啊,那我现在把这张代码呢,先给同学们放到我们的这个包下面去。这是我们第七章,我新建一个包,这个包呢,我们就叫做可见性,叫visit。Visit。好,然后呢,我把刚才写好的这个代码给同学们放过来啊,比如说我就想test visit。好同学们,我们看一下这个代码啊,看一下这个代码,这个代码呢,我这已经写好了,我就直接拿来用好拿来用放过来就行。
01:02
好,格式化一下,好,我们来看一下,呃,这个代码是什么意思呢?同学们看到啊,为了省事,我已经把这个准备好了。我这里注意听哈,有些东西呢,还是要听一听的,我这里写了一个类。这个类呢,我为了演示这个效果,我先写了一个属性,这个属性呢,我没有任用任何修饰符。紧接着呢,我用了一个private好,用了一个private好,呃,这个地方写了一个方法,同学们可以可以看到在本类中。在本类。A,在这个本类可以使用私有的。私有的对吧,其实这两个同学们,呃,在底层都是私有的啊,别人问你,呃,这两个是什么,这个在底层也是私有的。OK,这个呢是你显示是有的,他们的区别还记不记得我讲过,呃,还还记不记得这两者在底层来看区别在什么地方。
02:02
对,诶是不是这个是是生成的一个可读可写的方法。就是这个会生成可读可写的方法,而这个只会生成一个只读的方法,对吧?而区别在这里,好这个地方可以看出来,那么现在呢,我在这大家可以看到我在这写了一个object,那么这个object里面呢?呃,他们之间的关系是什么?他们之间的关系是什么?我说一下,我说一下,当一个文件中。啊,后面我们还要说这个事啊,当一个文件中有一个文件中出现了。出现了这个给出现了这个class object和object,呃,Class和object cer,那么他们之间的关系是什么关系呢?当它同时出现了啊,出现了这个class c和。
03:02
Object可乐。Object clerk,那么这个时候他们的关系是这样子的,我们把它称之为半生内。啊,把它称为注意听称为称为半生内。啊,半生内,我们把这个称之为半生对象,把这个称之为半生对象。的半生半生对象。那么呃,有同学就要问了,说老师,那为什么呃他要搞这两个东西呢?我这里先简单的给大家做一个解答,因为详细的解答要涉及到一个静态静态的东西,所以我看过很多这个书和视频啊,都没有把这个提出来,就说呃开设计者为什么要要成这两个东西呢?他是这样子的啊,注意我先简单说一下啊,就是开了设计者呢,他拿掉了静态静态的东西,因为注意听,因为开了的设计者。
04:11
设计者将什么去掉呢?他将这个static这个关键字去掉了。Static拿掉了,拿掉他,他把它拿掉的原因就就是因为他认为他不是一个呃面向对象的范畴,所以他把它去掉了,但问题又来了,他把它拿掉以后呢,但是我们基于JVM运行的,而JVM那个Java里面要做做到跟Java无缝无缝接轨。那你如果说你Java有13T格,你SC没有13T,那肯定要出大问题,那肯定不能做到无缝接轨,那怎么办呢?诶他就做了这么一个转变,然后他干什么呢?他使用他就设计了,呃,这个这个他啊他就他就设计了,设计了一个叫半生对象半生内。
05:04
半生内、半生内和半生对象的半生。半生对象的概念,那怎么半生对象的这个概念,那怎么来完成这个事情呢?注意听第四句话就是将,将什么呢?将将这个非静态的部分,注意听,将非静态的属性和内容放在半生内容,将静态的内容放在半生对象中,换言之说半生对象。其实。就是写静态内容的这么一个位置,好,他是这么意思,就是说将来半生类里面放的什么,就是写。写非静态的,非静态的。非静态。静态的内容。而这个伴生对象放的是什么呢?放的就是静态的内容。
06:01
二就是静态的内容。诶,有就是这么一个概念,好,这是第一这么一一个概念,那么第五点我们要说一下,在半生对象里面,大家可以看到,在半生对象里面,我们可以访问这个。可乐的私有属性。大家看这里啊,在这里体现出在办事对称中可以访问私有属性,这个没没问题。但是你在外面用不了。比如说我这有个clerk。这这创建一个,可你看我这用C点这个开,开了我这个地方用它就会报错,他说这个是呃不可获取的啊,所以说举这个例子呢,就是让大家看到私有属性。能够在本类访问,也可以在它的半生对象中访问啊,这个地方大家清晰一下,好,这个我们说的是它的,呃,第一个这个可见性的介绍,我们再来看可见性的,呃,可见性访问修饰符的一个,其他的这个是个介绍,那么下面我们来看可见性和访问修饰符的使用,我一共总结了有这么。
07:13
啊,六点我们把它走一下。那么开中包的可见性和访问修饰符怎么用的呢?第一个,当属性访问权限为默认时,比如说这个案例。为默认时,那怎么办呢?从底层看它是私有的,但是因为提供了一个。呃,从底层看,实际上它提供了这两个方法。一个是呃,类似于晒的方法,一个是get方法,这个在前面讲过了,因此从使用效果上看呢,好像都可以访问。啊,这是这是这个默默认的情况是这样子的,当方法访问权限为默认时呢,默认为public,这有区别啊,同学们注意听你属性是默认。其实底层是私有的,方法为默认,其实是公开的。也就是说。
08:03
假如我在这写了一个so for,这个就是一个公开的方法。这个就是一个公开方法,待会呢,我们看一下这个底层,好,我们再来看第三个私有private为私有权限,只能在类的内部和伴生对象使用,刚才我们已经举这个例子了,就私有的这个方法也好,还是属性也好啊,它只能是啊这个半生内部和半生对象,就你自己把以前私有的,那只能在这使用,外面就。就用不了了,外面就用不了了,那么protected呢?是受保护的中注意听这句话,SC中受保护的权限比Java更为严格,只能在此内访问同胞。无法访问,那什么意思呢?举个例子哦,我把这个案例都写到一起了啊,同学们,比如说我在这里有一个这样的属性叫H,我给他了一个值十。
09:03
好,然后呢,我在这里给他来了一个protected的修饰。同学们。这个protected。你在同胞就无法使用了,什么意思呢?同学们看这里。我在这用c.H我们发现它是要报错的。他说,这个age你无法访问。那其实这一点大家都知道,在Java里面,在Java里面,在同一个包里面的这个protected是。可以用的,还是这样子的吧,但是在在开里面就不能用了。这点请同学们一定要小心一点啊,就是我在这总结的这句话,因为它更加的严格,还有开了中没有这个public的一个关键字啊,不要用public显示的去修饰属性跟方法,这一点大家要清晰的知道,就说你千万不要这么去写一个东西,说老师,呃,这个访问修饰符,我这样写一个可不可以,比如说我有一个,呃,这个职员的什么呢?职位叫job。
10:10
Job,那job呢,比如说这个人的职位,我默认给了一个,比如他是一个什么呢?呃,就是大数据工程师。大数据工程师好说,老师,我想把它做成一个public的,对不起,你要这么去写的话,代码是要出错的。也就是说在style里面呢,它不能用这个public,换言之,你可以理解成在我们这里面就没有这个public了啊,就不要去写,不要显示的用。啊,但是呢,使用效果上还是可以,因为它会提供呃那个两个供应方法嘛,呃两个公应方法说效果上还可以,但是你不用不能用PA的个修饰,这次说的这么一点好,最后第六点再说一下。第六一点呢,是包访问权限。包权限表示属性有了限制,同时包引流限制,这什么意思呢?这是开新增的一个内容,它怎么样呢?他这样子的,大家看我这有一句话啊。
11:11
呃,这个叫包访问权限,这个包访问权限呢,体现出开包的灵活性,相当于给我们这个呃访问权限。扩大范围再说一遍,相当于给我们访问权限扩大范围,比如说同学们看这个案例,这一个person。Person里面呢,有一个呃,P。那么我在这加了个SC,表示什么意思呢?我给大家举个例子来,同学们,我在这写一个。写一个classper。写一个啊,很简单的写一个V,那么我这里写一个名字。啊,等于默认给他一个Jack,好,同学们,现在呢,我在这儿用一下。我创建。
12:00
创建一个person对象,这个对我们来说没有难度,VLP等于六,一个person没没问题,这个肯定是可以的,然后呢,同学们可以看到啊,我在这里使用这个这个名字是可以的。因为你因为底层它会生成两个,呃,公有方法嘛,但是同学们看到当我将这个加成private过后,肯定就用不了了,于是上面会报错,原因是这个原因。哎,这个报错的原因大家应该很清晰的知道,就是因为你这里就不能没有这个公开方法了。那但是我这里使用一个包访问权限,它又可以用了,来看一下这里我们增加一个包访问权限,怎么样跟他增加一个包访问权限呢。它是这样写的,来,同学们看,只需要在private后面加个中括号写上啊,你看现在我们所在的包是visit。
13:03
是visit,我只需要在这边加上这个visit。上面就可以用了。什么意思?大家应该有所感受了。相当于是我们在这个private基础上扩大了它的防御缺陷,什么意思呢?下面这句话的意思就是说。下面这句话的意思就是说什么呢?两点啊,就是第一点仍然是私有的,就是它仍然是私有的啊,仍然仍然是。啊,仍然是私有的这么一个访问权限,第二点呢,它扩大了一个范围,就是在什么呢?在这个是开了包,它在这个visit。VZ的这个包下也可以使用什么呢?这个类目属性呢。相当于,相当于扩大了,相当于啊,相当于扩大了,扩大了这个访问权限,相当于扩大了访问的范围。
14:07
访问范围,好,这个地方大家注意一下,扩大了访问范围。那么当然有同学说了,说老师,那我把这个visit换成这个呢?比如说我把它换到这个chapter,零四呢,零七呢也可以,如果你把这个换到这呢,就意味着这个包以及这个包下面的子包都可以访问,再说一遍,就意味着这个包以及这个包下面的纸包都可以访问。那当然,老师说我要写到这儿呢也可以,你要写到这儿的,不又上一集吗?好,所以说呢,大家理解一下这个刚才的含义啊,我就不再多说了,就是visit包下面可以报,包括它的直包。包括七子包。那它下面没有纸包,那就那就不说了,包括纸包。好老师,我我就把这个讲到这,当然你这个private呢,也可以是protected呀,或者什么你看改成protected也是一样的,我相信同学们这个这个应该是有基础的了啊,你看我写成protected上面的也是OK的,你看也是OK的,那我把这个拿掉,你看我把这个拿掉,他又报错。
15:11
另外包装他说不可访问,那当然不可访问了,刚才我们也讲过嘛,因为他受保护的权限更加控制的更加严格,好V1加上又对了,好,这是我们讲的第六一点,就是包访问权限的一点说明啊,包分权限好下面这个呃,可见度可延伸到上上层包这个我也讲过了啊,好同学们,那现在我把刚才讲的这一部分呢,给同学们板述一下。哎,满足一下。好,刚才我讲了什么东西啊,我刚才讲的东西呢,是呃,撕开了包的一个,先是做了一个,呃介绍做了一个小案例啊,做了一个小案例来。来,把它放到这里来啊,同学们。好,这是包的可见性的一个基本介绍。诶,做了一个基本介绍,然后我写了一个案例啊,就是代码案例。
16:04
代码的一个案例,对不对?好,这个案例呢,我也不拿别的地方了,我就直接拿这个用吧,好吧,啊,同学们应该能够一一目而了然。啊,Em email了然。好,这是第一个,第二个呢,诶,我有给同学们说了一下,我们这个包可见性的,呃一些相当于一些需要注意的地方吧,啊我总结了大概六点,我们来看一下。啊,可见性,我总结了这么六点来依次的给大家再过一下。诶过一下第一点第二点第三点对吧,首先呃,你是默认的情况下,呃,底层还是是有的,但是提供了呃两个公开方法啊,如果访问权限为默认呢?呃,如果你方法为默认就是public啊就是这个我也说过了啊呃私有的private私有的那是在内的内部和办事对象可以用啊这个刚才也也演示了一个案例。Protected呢,控制的更加严格了,就说开里面,呃,在同胞下面不能访问protected。
17:04
啊,Public不要显示使用好,这是我们刚才讲的这么五个小的知识点。好,给大家板书一下。走一下啊,第一个你看这个好像感觉记得东西有点多,其实你也不用刻意的去背啊,同学们,我说了不用刻意的背,你们将来写代码写写上几次自然也就也就知道了,好,这是五点,然后呢,我们还有个第六点。第六点呢,我们讲的是包访问权限的一个扩大啊,怎么扩大的一个问题。好,我把这个代码呢,给同学们放到笔记里面来啊,刚才这个代码就直接拿过来了啊,我们我们拿这吧,拿这啊,所有的这个代码都在这啊,我为了好看呢,还是把这个也拿过来吧。好,这是针对这个六的案例。啊,针对这个六的案例。好,然后整体12345呢,123456,还有一个整体的代码啊,这是个整体代码就是。
18:05
还有。整体的整体的一个代码演示,代码演示啊,就前面123456整体代码演示,我也给同学们阐述到这里。好,就是在这个visit里面,Visit里面有个test visit全部都有了。啊,同学们呢,哪个地方想不起来,把这个代码拿出来看一下就应该很清晰了啊同学们。好的,同学们,我们就把这个包的可见性说完了。
我来说两句