00:00
行了,那咱们来看一看第二十二天啊,咱们今天啊。讲一些什么内容啊,讲什么内容,来我们把这个文档打开啊,我们还有一个叫做访问控制权限,是不是访问控制权限,我们来把这个访问控制权限看一看啊。来。说完这个之后呢,回头咱们把这个object类说一说啊,然后基本上也就差不多完事了啊,练对象来,那么这块的话,咱们把这个CHAPTER17这块还是这这个章节啊打开,打开之后呢,点右键我们去新建一个目录吧,我们叫做访问控制权限。嗯。防控权限啊,然后接下来呢,我们点右键啊,去新建一个什么呢,我们的一个。成句,比如T0。T01啊,嗯,然后呢,我这个这个位置呢,我再准备一个类,这个类呢,我叫做user。啊,User user这个类啊,大家注意看啊,我是这样写的啊,Public class user,然后呢,这个user类呢。
01:06
嗯。里边给一些属性啊,给一些属性,这个属性呢,我把所有的访问访问访问权限我全部给它,呃,列出来行吧?啊,我们研究研究这个访问权限好不好,哎,一个是private,比如private类型ID。啊,然后呢,再来一个ED。Detected啊,受保护的,比如age。然后呢,再来一个public啊,比如说这个还是int型吧。嗯,Int类型,比如说这个叫做体重。啊,Wait。那这个呢,其实是什么意思呢?是私有的对吧,而这个protected这个单词是什么意思,表示受保护的。啊,受保护的注意听啊受保护的,然后呢,我们再往下呢,这个public就表示什么意思啊,那是公开的喽。是不是,哎,这是公开的啊,公开的那其实还有一个啊,还有一个比如说这个叫string吧内啊,然后大家看前面是不是什么也没有啊。
02:11
对吧,哎,所以说一共是四个访问。呃,访问权限啊,一共是四个访问控,呃访问权限呃控制啊修饰符,那么这个修饰符这块呢,一个是private,各位啊,一个是protected,还有一个是public,另外是还有一个是什么也不写,什么也不写啊,不要写default啊,不是default各位啊,这是。这表示默认。这个表示默认前面就是前面啥也不写,就这个东西不写。啊。好。私有的,受保护的。公开的这个位置是默认的。来我这个笔记呢,给大家记到这儿啊,叫访问控制权限,第一个就是访问控制权限。
03:11
都有哪些答案四个啊,四个private protected public。啊,这个是私有,这个是受保护,这个是公开啊,那么还有一个什么呀,是默认。默认啊,就是什么空白,什么也不写啊,什么不写是默认,那么。以上的四个访问控制权限啊,这个控制的范围是什么?控制的范围是什么?我们可以看一看啊,我说两个极端,各位啊,我直接告诉你private表示什么,私有的只能在本类中访问。
04:02
啊,只能在本类中访问各位啊,Public呢,表示什么呀?公开的在任何位置都可以访问。一个私有一个公开对吧,你公开给大家一个秘密对吧,你说我最近。交女朋友了,我的女朋友叫小花。啊,它很漂亮很漂亮啊。Private。是一个什么呀,是一个小秘密对吧,因为女孩子她有个小秘密,什么小秘密啊,哎,她的体重是个小秘密,她的年龄是个小秘密是不是,哎,Private私有的,我不告诉任何人,我不告诉任何人我有一个小秘密啊,就这个意思,表示公开的,公之于众的啊,公之于众的。那么剩下呢,其实就是两个,一个是这个,呃,Protected,还有一个默认这两个可能大家呢,现在还不知道它是干什么用的,对不对,哎,我们可以看一下,可以看一下啊,我们可以经过一个严格的测试,对吧?啊,这个东西你你可以下去之后测试一下来,比如说吧。
05:09
我们。各位啊,我在这里说一下啊。这个private我就不再测了吧。啊。测一下也行啊,测一下也行来。呃,这边我写个package啊,com.b node啊,就随便写个写个包啊package包,然后呢,我在这个位置有一个class啊,Other class。行吧,我我就别在这写了啊。嗯,我在这写吧。有点累啊,然后在TEST01里边。Package com.b po。刚才呢,大家看user这个类也是package com.B的啊,我这个呢也是B的。
06:03
Public class,我们叫TEST01。Public static。然后呢,我们在这儿啊,这样啊,User user new user啊,我们把对象溜出来,溜出来之后呢,我们来访问一下这个user对象的一些属性,好吧。呀。有什么呀?有这个ID呀,Age呀,Wait呀,Name啊对吧,哎,来有这个ID是不是哎。然后有什么呀,有这个叫做age是不是,哎,我们来看一下这几个哪个不行啊,然后呢,又在点什么呀。是不是,哎还有一个什么呀,哎,有点点什么呀。
07:01
叫做内蒙啊内蒙。我们来编译一下就知道了,好吧,编译一下啊,来CMD怎么编译啊大家。Java c吧,是不是编译到当前目录呗。编译谁啊,所有的Java文件编译走,我们看哪个报错啊,说private是修饰的,ID在这里访问不了。对不对,在这里访问不了,所以呢,大家注意啊,Private。修饰的元素只能在本类中用,你现在是不是已经出了这个类了,这个类叫user吗?你去另外一个类里边用吗?是不是用不了啊,对吧?这是T01别的类,所以这块是正常的,我们再编译。诶,发现通过了,哎,挺开心。是不是居然通过了,大家看,哎,通过了可以啊,这个age。
08:00
然后呢?Wait和name在目前并没有出现问题,没有出现问题是不是好?那么接下来我们继续看啊。也就是说我们实际上是后边这三个还没有区分开。Protected public,还有这个default默认它是它们是有什么区别,这样啊,我呀在这再建一个TEST02,大家一起看一下啊。那么这块呢,我们就写一个叫package com.BJ power node2,大家看啊,包变了。包变化了。啊包变化了各位啊,然后呢,我们class叫TEST02。然后呢,Public static void,接下来我们把刚才那个代码其实可以复制一下,就把这个复制一下呗。对吧,复制拿过来放到这儿,放到这儿之后呢,我们这个private就不用测了,ID就不用测了,我们最主要是看看这个age对吧,还有这个这个wait,还有这个叫做name,我们看看这个出为出不出问题啊来我们再去编译Java c加杠D参数点,然后星点Java编译。
09:15
诶,我们发现有问题啊,有问题说这个第六行。哎呀。找不到符号什么原因,这是另外一个错了,各位你先导一下是不是com.BG power node点星对不对,或者说你import com.b power no什么呀,User是不是,哎,这个类你得先导进来啊,因为包变了,包变了诶忘了这个了啊,这个错误咱们可以理解吧,是不是,哎,重点不是不是不是测这个啊来我们编译一下走,我们现在看看第十行和第12行都不行了。第十行跟第12行都不行了耶。这个和这个不行了,内还行。
10:00
不是不是错了,应该不是啊,看十和是啊,十和12行不行了,就是这个不行了。这个错误了,这个可以,这个是什么错误了是不是,那么这个可以的原因是因为什么呀,因为这个weight这块啊,咱们采用的一个修饰符,回头看一下,Weight是public公开的。对不对,哎,那么这个是公开的呀,在哪都行,是不是,那我们发现一个问题,什么问题呢?就这个不行,Age不行。对吧,你看看一下啊。嗯,这个age是什么呀,是这个受保护的。写上啊,这是protected,在这里不行。对吧,那这个呢,默认对吧,这个默认呢,在这里也不行。
11:01
怪事。是不是,哎,那到现在我们其实这四个呢,我们就区分出两个来。还是这个。表示什么呀?表示只能在本类中访问。他表示,公开的在任何位置都行,这是两个极端,下边这个受保护的和默认这两个呀。怎么着啊?还是没区分开。对吧,因为他俩都报错了,你看再来。都报错了,H不行,Name也不行。那还是没区分开,怎么区分呢?诶大家注意听课啊,大家看已经已经在这儿换包了吗。换吧。换包了,我紧接着啊,我在这儿,我这样吧,别在这里边写了。我在这里再建一个。我这个类呢,就叫什么呢,就叫做。VIP。行吧,大家注意听啊,这个VIP的包名是com.BJ power node3包变了啊,包变了。
12:09
变了,那public VIP如果让VIP大家注意啊,User在哪个包下。U,在com.BJ power note这个包下对不对?VIP在哪个包下呀?在com.BJ power note3这个包下。是不是也就是说user和VIP不在同一个包,不在同一个包下,不在同一个包下啊,但是user是,呃,但是VIP是什么呢?是user的子类。你看VIP啊,它是有的子类,那我在这里我写一个实例方法。我随便写个方法啊,Public,比如购物。
13:03
那购物这一块我在这里,大家知道这里有没有this啊,This表示当前对象吗?This表示当前对象啊,你就可以see.out点打印输出,你输出输出谁呀。哎,我们来看一下这俩有什么区别,就刚才不是这个age不行吗。这个name,这个name不是不行吗,我们把这个。this.age输出一下,我们再来一个this,点什么呀?Name,我们来看看这两个哪个不行,哪个行好吧。好,我们看一下啊。嗯。编译一下。好,又忘了一件事,Import加va you谁呀?哎哎,不是加va YouTube啊,什么加va YouTube come.bg power not点什么呀?哎,User把这个user这个类别引进来啊,导入,因为它不在同一个包下嘛,来我们再编译走诶我们来看一下啊,这次是什么出现了什么问题?
14:08
呃,第12行。嗯,我们不应该把这个一块编译啊各位,上面这个是TEST0202看清楚啊,下面这这是VIP吧,上面这两个出问题,这样吧,我把它注释掉啊。注释掉,这不是有错误吗?先不管它啊,感觉很诡异是吧?哎,注释掉,那么接下来呢,我们看一下啊。这是之前的这个这个错啊,之前这个错注释掉回来,那么在这块呢,我们这个VIP去继承右段之后,我们访问一下这个age和内幕,看哪个能哪个哪个不行啊编译一下走。好,我们发现一个问题,各位啊,发现这个内部不行了。诶。这个age可以看见没有,这个protect protected,这个可以,但是这个默认不行,这是错误的。
15:07
默认不行。是吧,诶默认不行。但是大家看见没有,这个age和name,刚才我们第一版测试的时候,这是一个user这个类,com.B这个包,然后再往下有个com.BG的吧。是不是哎有个TEST01,这个TEST01当中是不是wait和name都能访问啊。这个包。和前面这个user这个类在同一个包。发现这三个都行。我慢点说啊,你好好想。然后呢,我换了一个程序之后换了个包。我发现什么呢?这个age和name都不行了,只有wait型,因为它是public公开的,紧接着呢,我又换了一个新的包,叫三,然后写了一个类继承父类U之后,我现在我发现age型内部不行。
16:09
大家给我总结一个结论好吧,能不能总结,把结论总结出来,发现这个age可以,Age是受保护的。也就是说,如果不在同一个包下的话。如果不在同一个包下的话。出了同一个包,这个protect是不是只能类去使用?东西是不是只能在子类中访问?对吧,哎,默认下是同胞可以访问。来我给大家写一下啊,经过我们的一个测试。我们。得出一个结论,什么结论?默认。
17:03
表示什么呢?表示只能在。本类。以及同胞下。访问。只能在本类。啊。包。子类中访问啊,那么这块呢,我们呀。可以有什么呢?可以有这样这么几种情况啊,来修饰符。访问控制修饰符。呃。本类。同胞。
18:02
子类。啊,任意位置。来我们看一下啊。Public。本类中可以吧,同包价可以吧。子类中可以吧。是不是,哎,任意位置可以。对吧,那么。Private呢?Private是本类可以。不行,不行不行。Protected呢?可以可以可以不行啊,默认呢可以可以不行不行啊,就这块儿呢,大家呢,最好能够把它排个序。
19:00
啊,你看是个阶梯式的public表示任意位置都行,Private呢。拿到这啊,Private就表示本类中行别的位置都不行。Protect修饰的呢?Protect修饰的就表示什么呢?哎,我们本类中可以,然后呢,同胞下可以,子类当中可以。任意位置是不行的,默认的呢是本类可以,同胞可以,子类不行,任意位置也不行。Private是吧,本类可以剩下都不行都行啊,这个不要死记硬背,各位啊,这个不要死记硬背。自己下去之后编写代码自己测试,你自己测啊自己测,你这块的一个大小关系是public大于protected大于默认,默认大于什么呀。
20:03
它的范围啊,从大到小排序啊,范围从大。到小排序就是这样的,Public表示公开公共的啊,Protect表示受保护的啊,然后默认还有一种是private,记住受保护的,你你想想,你听听听人家说这句话,受保护的,那你比如说我的东西,我可能只是让我的子子孙孙去用,我不希望,我不希望这个不是我家族之外就是我,呃,我家族之外的人去去使用。对吧,这就是protect的受保护的,受保护的啊,你比如说我我我家里有个传家宝,是不是我这个传家宝我只允许传给我的子子孙孙啊,就这意思啊。是不是,哎,Protect修饰的啊,那public表示什么呢?就是夸一下就公开了公共了,那行都行对吧?啊,全家人都能都能用,都能访问,就这意思,Private那就是我子子孙孙也不行。Private我子子孙也不行对吧?嗯,就就算再亲密也不行,Private我有一个小秘密,谁也不能告诉我默认呢,默认的意思就表示说我本类中行,我同一个包下咱们都行,同包下都可以啊,但是只要是出了包,各位啊,只要是出了包,默认就废了。
21:16
如果是protect出了包,出了包他还废不了,为什么出了包的话,他如果是子类的话没问题。啊,子子孙孙可以就这个意思啊,这个表示公开的任意位置都行啊行了,那这样的话,咱们这个四个访问控制权限这样的一个修饰符,我们就啊说到这里啊,我们就说到这里各位,那么这块大家还有什么疑问吗?
我来说两句