00:00
好,那么关于封装性的话,咱们上节课呢,已经是讲的差不多了哈,诶大家呢,这块呢,需要落地啊,掌握的呢,其实主要呢,就是这四种权限修饰符。诶,然后呢,我们使用它们呢,来修饰类及类的内部成员,体现了一个可见性的大小,然后具体的话呢,我们来看看有哪些具体的题目了,这儿呢,一共是列了有四个练习来,我们一个一个来看啊首先呢来看第一个。那呢,创建程序这里边呢,声明两个类,Person和person test类,然后呢,Set age,给这个person类的这个属性呢,去设置合法的年龄,Get age呢返回它的年龄,这呢我们这个age属性呢,就不对外暴露了,诶就这个意思,好这块我们把这个整个的需求,诶这样这样也行啊这样呢稍微的盯一下。好在这里边儿呢,我们先去创建一个具体的啊,首先是一个person类。OK啊。啊,这个类的话呢,它没有明确写这个属性啊,其实我们看到下边这个方法呢,也知道呢,它是有有这个A值属性的。好,这个属性的话呢,我们就不对外暴露了,哎,所以声明为叫private了,然后接着的话,我们给大家去设置对应的方法啊,首先第一个呢,去诶我们叫呃,设置这个age属性,或者叫修改age属性都可以啊,这个叫public,诶这块大家不断的写的时候呢,这个你稍微的去体会一下以后呢,就拿起来就得写了哈,比如说设置的话呢,需不需要返回值。
01:21
不需要是吧,但是你需不需要带点东西过去呢?需要是吧,诶所以呢,我们这儿呢,定一个in特性的A,那这个你可以想象成什么呢?这个叫设置或者叫修改是吧。啊,举个例子,比如说你这个骑个小电动车是吧,这个电动车坏了,你现在呢,灯泡坏了,你现在给大家想换个灯泡,这不叫修改吗。修理是吧,哎,你修理的话,你你不得带个灯泡过去吗。是吧,然后把这个灯泡呢,换掉原来那个灯泡,然后呢,修完了就完事了,所以呢,这是个wide啊。哎,那这里边儿呢,我们去做这个判断,说如果呢,这个A啊,呃,你是。得在零到一百三之间啊,你得大于等于零,并且A呢就小于等于130。
02:04
在这个范围内的话呢,我们就给这个呢,复制为这个小A了。OK啊,哎,否则的话呢,这块你可以写个输入语句是吧,哎,你输入的这个数据呢,就非法了啊。好,这个呢,就是我们这个设置的这个操作啊,然后下边我们还可以呢,叫诶获取。哎,获取我们这个age的这个属性啊,哎,这个的话跟我们这个set呢正好相反,你是Y的,我就不是。哎,我那就有返回值了是吧?诶然后呢,诶我这呢叫get h了,你上面有行参我就没有。诶就好比是呢,你在你这个楼下的这个电动车里边,你给我放了个东西,我要把它拿过来啊,获取一下某个东西,空着手去就行,诶回来的时候呢,你就带着东西了,所以呢得有返回值,空着手去就行,没有参数啊。好在这里边呢,直接就是下我们的A呢就可以了。哎,真的就设置完了,好这个设置完以后呢,下边就一个简单的一个测试。关于person的一个test。
03:01
哎,这样啊,没方法进来,诶在这呢,我们可以拿去创建。哎,创建咱们这个A的。哎,实例一啊。好造对象这个操作呢,咱们都已经比较熟了,诶你一个person就可以了,好,那此时的话呢,我们已经不能够直接去调这个属性了啊,你要改成个十,不好意思不可以啊,因为它是一个私有的一个X就是访问的啊,诶私有的访问权限不行。哎,这个不能掉了啊。叫编译不通过好,那如果呢,你想调呢,我们就得通过set。啊,比如设这个20啊,然后呢,你再通过呢,我们这个叫get age这个方法呢去获取。诶,你打印一下就行。啊就可以了啊呃,其实大家你想想,原来我们调属性的话呢,其实关于属性的调用呢,我们也是分成两个方向,第一个方向呢,像这样呢,这属于就是要设置值。哎,另外一个呢,以前咱们不是还有这样去打印一下,说我p1.a,这个呢,其实就体现为叫获取。
04:04
就关于一个属性的操作呢,其实呃,以前啊,要么就是你负个值,要么你就是看看它的值是多少,其实呢,体现为不就是这样的两个方向吗。哎,他呢用它替换,它呢用它替换,哎就。OK啊行,这块又提到说你再造另外一个,呃,造对象,再造个对象去体会这个咱就不行啊。呃,那有没有同学会这样想哈,说那我把这两个方法能不能合成一个?是吧,我楼下我去楼下呢,把我这个电动车这个灯泡换一下,同时呢,我再带点东西过来是吧。想的挺好,哎,怎么做呢?哎,把这俩合一起是吧,我就in一个了,这个我们叫do吧。A值是吧,带一个A就进去了。在这边判断一下说,如果A呢大于等于零,并且A呢小于等于130里边呢,我们就负了值了。然后呢,再把这个in age呢,再返回一下。哎,然后这呢有个else是吧,这个我们写上说哎,你输入的数据非法了。
05:04
在这块也要求一个返回值。这个比如说我们就return返回一个叫负一吧。哎,表示呢,就是你这个数据呢,写的是有问题的是吧。哎,假设呢,就这样了啊,诶你看整个这个操作思路呢,行不行。把俩合一起。你说你定一俩多麻烦呀,订一个多好啊。诶,同学迷糊了,不知道这样行不行是吧。呃,你想啊,咱们在定义方法的时候呢,其实提到过啊好几次这个词了,叫耦合度是吧。就是你不要觉得说我们把这个方法呢,分成俩跟合成一个,说一个呢就要更好。所以这时候你这个事儿呢,就不单纯了是吧,换句话说呢,你两个操作呢,是不是就耦合到一起了。对,从这个角度来讲的话呢,这个耦合度更高,所以呢,我们就不建议这样写,再换个角度来说呢,这个写呢,其实这个事儿不太靠谱,你比如说啊,哎,我现在就想看看我这个person几岁了。已经有这个对象,我就想看几岁了。
06:02
哎,那要是没有这两个方法的话呢,相当于你就给我暴露一个叫do a是吧。对,这还得让我传一个。传一个就传一个吧,问题是我传多少就返回多少。这,这不就恶心了吗?哎,本来呢,人家是十岁,我想看看是不是十岁或者几岁了是吧,结果你非得让我传个数,传个数呢,就负位值了,负位值还把这个值给返回了。这,这,这不就是有悖于这个题目的初衷吗?你要说呢,你想修改那我就忍了是吧,你想修改哈,我设置为30,你还给我返回了,返回我也不想要,所以我这块我也不去拿一个变量接收,这还算是还能接受,但是呢,你要想获取的话,你还非得让我填个值,而且这个值就是我获取的这个值。这不就不对了啊,所以呢,不能这样去做啊。这呢,注意是错误的。啊,咱们呢,要解释的话呢,建议大家还是从这个耦合度的角度来解释哈,每个方法就是单纯的完成一个功能,你在实际需要的时候呢,你就去组合这个方法去完成你的操作就可以了。
07:01
诶,这呢是咱们的第一道问题,好,接着我们来看一下这个第二题啊。第二题呢,是这样的。说呢,自定义一个图书类啊,设置相关的属性,然后包括对应的方法,就是对应属性的概率方法,然后图书介绍信息等,诶这个说的比较清楚,那我们就按照这个要求呢,咱们去设计啊。哎,我往这一放,首先啊,创建我们这样的一个类。诶,这个我们就称为它叫book了啊好,那这里边呢,生命有属性,虽然说这块没有齐,这个属性是私有的,但是他说盖赛方法了。啊,这也算是个暗示啊,只要说盖赛方法了,那属性呢,就不对外暴露了啊。哎,死之类型的叫a book name是吧?哎,死之类型的叫author。好型。哎,这就可以了啊行,这个你要怕不清楚,你可以在这写上啊,叫书名。哎,作者。价格。价格。
08:00
然后接下来的话呢,我们去提供对应属性的概率方法,这块三个呢,就是有六个方法。哎,这个大家呢,就多去写一写啊,这个我这块呢,我就快速的去写一下了,呃,一般呢,针对这个set的话呢,诶get的话呢,就叫get了,后边呢,就是你这个属性名。那就这么着了。Name。哎,这是四针形的一个顾客。这样吧。哎,这里边儿呢,如果你要是没有相关的这种限制条件呢,你就直接给他付就行。哎,Book name呢,拿这个,哎这个变量来去付啊好接着。嗯,死类型的。Get一个。哎,一个author啊,那idea呢,给我们的提示功能还是比较好的啊。哎,这呢也是一样啊,如果要没有限制条件呢,你就直接在里边附一下就行啊。呃,接下来我们再去获取它的价格,Double get一个price。
09:05
Return这个price。啊,我们去一下这个price。哎,大型那个P。Price。审批是吧,好这样的话呢,我们就把这些方法呢,就都设计完成了啊ctrl alt加个L啊,有的时候这个格式呢,我们需要调整一下啊,CTRL加L就行了。好,那这个呢,写完之后呢,后边提到说图书介绍的一个,呃,信息的一个介绍,诶我们可以呢,再去把这个属性呢,给大家输出,诶我们分装到一个方法里边啊。嗯,叫获取图书信息啊,Public这个我们不妨呢,就返回一个了啊,这个我们叫show啊,Infer吧。你看这样啊,这里边儿呢,我们就return一下相关的这几个属性信息,比如说叫a book name。哎,这个呢,不可内。逗号一下other。
10:02
这个叫。诶price好这样,诶ctrl al加个L调格式好,那么这样的话呢,我们把这个呢就写完了,哎写完以后呢,其实我们看到的对外暴露的就是一些方法。哎,其实我们讲了封装性以后呢,大家以后慢慢你会发现一个类当中有属性,有方法,通常这些属性啊一般啊。从后期来看,只要呢,你不是一些常量的话呢,咱们一般呢,都给它私有化了,有对外暴露的话呢,你都是去通过方法来进行一个属性的一个获取和修改啊。好,那么接着的话呢,我们就去定一个叫book的一个测试了。哎,没方法,一进来在这呢,我们就可以,哎,写一本书啊,哎,BOOK1。你有一个book。然后这时候呢,我们这个不音的点,你会发现呢,我们关于这个book里边这个属性啊,都不能直接访问了,诶只能够通过相关的这种。方法去设置啊。哎,首先啊,设置一个,比如书的一个。
11:00
名字吧。啊,这个咱们商务也写了几本书了是吧。啊,写了一本扎基础的书啊,叫建制Java是吧。没有推销的意思啊,下一题。啊,这个咱们就诶上微谷教育出的是吧,主板啊行,然后呢,Book可一点塞这个啊这个价格呢有点高哈。没见过是吧?啊,180.0啊。对啊。内部优惠啊,有就是从咱们内部内部价的话呢,是只能是打五折了,是最低了。就是对。电子版没有对,后边应该会上啊,后边会有电子版啊。对,就这本书呢,咱们其实想把它写的厚一点啊,所以呢,确实写的是真厚了啊,然后呢,出版社的话呢,他们就是想着法呢,就是让这个书尽量大一点,现在出版社这个计算价格呢。他们那个书架现在都贵了。差不多话就页数出一个六,大概就是它的一个价格左右啊对,咱希望它便宜点,要太贵了卖不出去咋整是吧。
12:07
现在呢,就是还比较贵啊行,这这这次要的啊。我们是写代码的哈,这个好,然后最后的话呢,我们就通过这个book一点,咱们去收一下infer是吧。诶,它返回的是字符串的,所以你这样写的话,你看不到这个效果的。啊,你说这个方法执行没有啊,其实执行了啊,就看到是个字符串了,你得自己呢去输出一下。I need you。点啊输出一下啊,这样才行好一下。诶OK,诶这样呢,我们就出来这个情况啊好,那接着的话,你还可以再创建新的对象,呃,这个我就不多说了,呃,咱们前面讲过说每创建一个对象呢,对应的这个属性呢,都各自一份的,跟原来一样啊,我们现在封装性呢,考虑的只是呢控制这些属性方法,哎,在被访问的时候呢,这个权限的大小而已。没有影响本身说你有一份,那现在该一份还是一份。
13:00
OK啊。好,这呢是咱们这个第二道问题。好,接下来看这个第三道题,诶这个题呢是这样的啊,它这呢叫员工类啊以employe了,首先呢有这些私有化盖方法啊,然后呢,再提供一个盖率粉,诶这个跟我们刚才书呢差不太多。嗯嗯,这块有个小区别呢,就是后期的这个测试这块。这块的话,我们要求呢,创建的是一个数组,哎,数组呢,就有多个employee了,其实又是一个对象数组的问题了,然后呢,我们从键盘呢,输入员工的信息,最后呢,便利。啊,那这块呢,就首先会提到了,呃,你先去添加是吧?啊,比如说你数组里边有三个员工吧,它会提示你添加第一个啊,你就把这一顿写添加第二个,添加第三个就填完了,填完以后呢,再一回车,他就把这几个员工呢就都展示出来。哎,就是这样的一个效果,OK,好,那么首先的话呢,我们先设计这个employee这个类。啊,对应的就是这样的一块信息啊,盯一下啊。来新建一个employee啊,员工的意思了。
14:04
哎,首先呢,声明属性,哎。哎,死之类型的name。Private。呃,性别是吧。吧。哎,真的。Private。In形态age。这个电话第二咱们说过啊,撸串类型是吧。那这个我们叫phone number啊。这个没了属性私有化可以了啊,然后呢,提供概率方法。嗯,Get和set啊这个方法。好,这块我们再快速的去写一下啊。嗯,就按照这个顺序呢,一个一个来。That name。哎,这里边儿呢,没有限制,我就直接复制大脚啊。哎,这是一个string get name。
15:05
同学们,要是我们一个类里边这个属性要多的话呢,这样写起来是不是还挺累的?诶后边的话呢,我们给大家讲这个快捷键啊。嗯,现在为啥不讲呢,现在我这块就是让你体会体会写。得练一练是吧。差了一个真的啊。哎,这就是,哎哟,这个还不能写成真的。这个是吧,诶有同学说,诶你知道为啥我这块不能写成真的吗?这型针的话呢,这块有点麻烦呢,那这俩名一样哈,是吧,诶咱们呢,这个呢是想让它当属性,这个是刑参,这样都写的话,他俩都成刑参了。这个咱们后边讲这是关键字,对,就来解决这个问题的啊。好,Public。呃,返回的是个叉。Get,真的。哎,就他啊。
16:00
啊,这是第二个了,第三个。Avoid set,一个age。哎,这样啊。呃,Int类型get一个。A,是吧?好,然后呢,我们这还剩一个啊,Phone number。在这啊。Public VO,一个phone number。哎,死定类型的phone number啊。哎,这个呢,返回一个string。哎,盖一个phone number。哎,Phone number哎,可以了啊好,这个没问题是吧。啊,Ctrl alt加个L啊,调一下这个格式,这个完了以后呢,接着我们再去提供一个,诶把这几个属性呢,都诶这个拼在一起的这样一个方法。
17:02
嗯,这个是一个get in。你要return一下这个,咱们就这样啊。嗯,对,这块要写的话呢,其实呃,他也没提怎么去写,按照我们的习惯的话呢,可能就会像刚才一样这样的去写了。诶可能会这样去写啊,然后这块呢,我呢,呃先别这样写,因为后边的话呢,咱们要显示员工列表,呃,你发现呢,这个位置呢,不就是把这几个属性呢给显示了一下嘛,诶不防这块呢,我就把这个方法就往这块靠,等你回头要显示的时候呢,我直接就调这个方法就行了。诶,所以这块呢,我们就,诶根据他这样给的这个格式哈。诶,我来去设计我这个方法。这个就不用了啊,这个我就直接呢,就是拿他这个name是吧。哎,Name,然后呢。这样。哎,杠T啊。再拼接一下它的这个真的。杠T啊,再拼接上他的这个年龄。
18:01
A。哎,加上我们这个phone number,哎,这就可以了。好啊,这个我就这样来写了,当然了,这样写是行的,是不是也可以这样写呢?你看啊,我这个位置呢,是直接调到属性啊,因为你在本类当中,它在私有,它在本类中也能看得到,诶或者说你说我这块就不掉这个属性了,我就直接改成调方法是不是也行。啊,钙内。Get一个gender是吧?是不是也可以啊?但是哪个好啊?啊,感觉都一样是吧,哎,其实要非要讲的话呢,是不是直接掉这个属性要好一点。诶对的,你要调方法,方法呢,是不是首先呢,你要做一个战争,是不是加到这个战里边是吧?诶然后呢,加进去以后呢,调完之后呢,返回的还是一个内幕,诶然后跟上面就一样了,相当于多了一次这个战争的入战操作。但是这块呢,其实对于性质来讲呢,这个差别不太大啊。好,所以这两个呢,哪个都行,但是你要不在当前这个类里边呢,要想调,那只能是这样写了。
19:05
行这个呢就完事了,然后的话呢,诶这呢,它就对应的有两个这种操作了。你看这个操作的话呢,我们看一下在测试类里边怎么去实现啊。哎,这呢,我们就诶employee的一个测试,哎方法进来,哎首先这块呢,我们去诶创建啊employee类型的数组。Employee啊类型的这个数组,这个数组里边呢,不妨咱们就提供两个员工得了啊,哎,省事一点了啊。好,那我们就首先呢去创建了。诶new一个,诶employee类型的一个数组,这呢咱就放成二了,好,那么这个数组呢,创建好了,每个位置呢,其实还没有员工的,我们就可以通过一个循环的方式呢去,哎给他呢做一个赋值初始化啊。哎,这个呢叫eps.ls哎,这个大家应该都清楚好,那这里边儿呢,我们首先呢,针对于每一个位置的元素呢,先去new一个。
20:02
Employee是吧?哎,这个呢,就创建好了,然后下边要做的事呢,就是给我们这个employee呢,它的12344个属性呢去赋值。这个赋值的话呢,诶这个我们是从控制台那输入的信息,那这就调了一个scanner了。诶,所以他一上来说添加剂几个员工啊,那这呢是赋了一个值,然后这块呢,我们紧跟着来一个输出语句,就是叫诶添加地。第一个员工,那这个我们还得写成叫。对A加一了得啊。哎,各员工哎就可以了,嗯,他这还有一些短横线哈,咱们在这也整一点短横线。一二三四五六七八九十啊。哎,这样吧。OK啊行好,那么接下来的话呢,我们就呃,提示一下用户呢,输入这样几个信息,然后把这几个信息的值呢,我们就付给当前这个对象的几个属性就可以了啊。啊,这块我们就这样写啊,这个就不要换行了。
21:00
姓名哎,冒号一下scanner没有来,注意scanner的话呢。我写到这里边儿行不?行呢,倒是行。哎,但是你没有必要呢,是不是每循环一次造一个对象是吧,对,用一个就行吧。哎,所以提前呢,我就比如说就写到这儿了啊。好,这个SC那就放到这儿,诶然后呢,在这里边诶,我们就掉了一个SC点。呃,Next的方法,这呢是获取一个字串了,诶这个字串的话呢,你也可以呢,直接先把它拿到也行啊,或者你就直接就开始给这个去赋值也行,咱就先拿到吧,这是一组一共是四个哈。哎,我就先。整四下了啊。姓名,这叫性别是吧,性别的话呢,我们没有next差的方法。对吧。对,先得到一个字符串,然后点叉AT0,对啊,这个我们叫一个真。呃,下边呢,这诶。
22:00
啊,这个是差的啊。好,下面这个呢,是年龄啊。对这个了是吧。这个我们就是int型的age啊。哎,是不是这样了,这个电话。呃,电话呢,是一个死钝形的啊,这个叫呃。诶number是吧,哎这样就可以了啊好,那么这样的话呢,我们就把这几个信息呢,都拿到了,拿到以后呢,诶咱们就接着啊说给。哎,指定的这个employee对象,它的这个属性。哎,赋值。好,这呢,我们EPS这个I,这不就这是当前的这个对象吗?诶拿着它点。哎,Set方法啊,一个一个来啊set name,把name放进去。啊,一共在这块,我们先整这四个啊。哎,一个的是吧。哎,真的。Set age。
23:02
An age。哎,下一页我们这个叫phone number。Phone number,诶这是不是就可以了。这个呢是我们负的第一个啊,这个付完之后呢,紧跟着这个爱加加,然后呢,诶第二个元素创建好对象,诶再去一个诶从键盘获取,然后再去赋值好整个这个号循环结束以后呢,我们当前数组中的。呃,元素就有了,然后属性呢也都有了,然后在这块呢,我们去便利。哎,员工列表是吧。哎,就可以了啊,哎便利呢,就是我们这个事儿了。来看这个了啊哎,首先我们去做一个输出啊,嗯,上边这块获取上边这块输出啊,这块有输出这块都有换行了哈,行,这个我们就直接这样写了。呃,员工列表。哎,这个我们整一堆这个。短信啊,在这吧。员工。
24:00
哎,列表行没问题啊,哎,下面的话呢,首先。把这几个这个基本的字段呢,给它写出来啊。编号这个我们就直接杠T了啊,姓名。RT。性别。年龄。电话诶没问题啊。好,然后下边这块呢,我们就嗯一二这个呢,是不是又得循环了吧。对啊。YEPS.les啊。好,然后这里边儿的话呢,我们就这一行,就打印这一条语句就行啊,这样就行了,哎,编号呢,是从一开始的。对I加个一。诶,然后再去,诶后边这块的话呢,我们把诶这几个属性呢,是不是封装到我们这里边儿的这个方法里了是吧。放到这了吗?我们就直接调这个方法就行了。好,Ctrl alt。左,然后我就回来了啊,刚才我是点这个键进去的啊,Ctrl alt左我就回来了啊。
25:02
好,再回到这个位置,这个呢叫EI get一个。Infer。也可以了啊,然后这个位置呢,其实有个换行是吧。加号一下,那不是换行有个制表符吗。诶这样,诶这呢一个制表符,然后呢,一个这个啊对对对,诶是不是就可以了。这个有可能对齐的效果不是特别好。对,最后还有一个输入语句呢啊。And dress a。在这儿啊,员工列表完成。好了,这时候我们就可以呢去做这样的一个测试了。我们就从这儿run一下。啊,开始了啊,说添加第一个员工,比如说就是汤姆。性别,男。年龄23,电话。啊130啊1234 1234就是这样啊,添加第二个员工。杰瑞。
26:00
啊,性别啊,女啊。这个年龄啊,12。电话,嗯幺三。九啊,我就随便来了哈,然后回车一下。诶完事,诶对齐好像也还行哈。嗯,没问题。对,员工12岁,这个有点小是吧。嗯嗯。童工啊,嗯。行,没啥问题啊,哎,这个题目呢,大家就下来呢,可以去写一写啊。好,那这个呢,我们就说到这儿。然后呢,最后这块呢,实际上是我们想做一个测试啊,诶测试什么呢,咱们呢,前面不是讲了有四种权限修饰的,这四种权限修饰的话呢,我们想看一看说诶这个到底怎么去理解真实的情况呢?是不是这样子的,诶我们就可以呢,写了一个代码来做一个测试,但这块测试的话呢,我们就先忽略掉这个叫protected了。因为我们现在还没有去讲这个继承关系,所以此类这块呢,我们还呃不涉及到啊,所以暂且呢,他想忽略掉,呃另外呢,这三个呢,咱们稍微的给大家呢,做一个演示啊,让你感受感受啊。
27:03
好,那么回过来,嗯,这块的话呢,我在一四里边呢,去做这个测试。这呢,就他对应的写的这个需求了啊呃,这么着,我在这个T1这里边儿呢,诶新建一个类。啊,这个类呢,比如我就叫做order类了。呃,这个类的权限呢,应该稍微的大一些啊好,那么在这个类里边呢,我呢去声明几种不同权限的属性。哎属性,哎,包括呢,我们再去生命不同权限的这种方法啊。那先看这个属性这块,这个呢,我们就诶private啊,In型的,比如我就叫做order private了,哎咱们方便的识别啊,然后呢,缺省权限,哎,我就不写这个权限了,然后呢,Order那叫做default吧。然后呢,接着我们再写一个叫public啊特类型。Order public,哎,这个一看这个名就知道啥意思啊,方法这块呢,也同样的道理,Public我就写成word了,叫method private。
28:04
方法体呢,我就具体不写了啊。Method default。注意啊,这个有的呢,大家可能看一些书上呢,他会说说这个缺省呢,他就给写成叫default了。诶这个呢,就理解成叫缺醒,但是呢,我我我以前可能也这样写,但我现在呢就不这样写了,因为我怕有人认为呢。就是用default修饰了啊。能理解吧?Default就是我们说缺哎,Switch case里边不也有default吗?就是你你前面都不行,那默认呢,就执行这个是吧,这就default意思啊,当然呢,你这个位置它可不是说呢,我们去加一个default啊。加了就错了,就是不写呢,就叫做缺锌。啊,这个小心一点啊。好,然后呢,诶这个不对了,Private说的是吧。那这个呢,就不要写了。啊,这呢,Public。Method public。哎,这样行了啊好,这呢是不同权限的方法啊,这个呢是不同权限的属性,首先呢,我们在当前这个类当中呢,去做一个简单的测试啊,咱就叫做T吧。
29:09
在这啊,在当前这个类里边的话,哎,你某一个方法当中啊,这些呢,都能够调方案里边调属性方案里边调方法都是允许的,所以呢,你这块啊order你看这仨都能看得见。比如说这个呢,赋值为一。这个负值为二。啊public啊,这个复制为三是吧,这是掉了一个属性的,诶方法呢,同样道理啊,这几个都可以。这个是吧,那你看都不会报错啊,所以这个呢,就是在当心类当中啊,你权限再小,当心类中也能用。哎,那比他这个稍微的呃,夸张一点,是不是就往外走一下,不在当前类里了。但是还在当前包里。所以呢,在这个T1这个下边,我们去创建一个。比如我这个叫order。哎,它的一个测试。
30:00
看在这儿我写个没方法啊。好,那么现在的话呢,我们想去调用奥尔里边的一些结构了,哎,这些结构的话呢,属性啊,方法呀,是不是得通过对象去调啊。所以呢,首先我们先去创建一个对象。Order。哎,你一个order。哎,同学说创业对象那就造个呗,其实这块呢,哎,我说呀,也会涉及到order这个类的一个权限。Order这个类的话呢,我这呢写成是了。他在整个我们这里边儿这个包,各个包当中都能看得见。但是你不用担心重名的问题哈,因为我们说呢,不同的包下呢,是不是可以定义重名的,这个重名的类的是吧。哎,有一样名的,没关系啊,你指明了是哪个包里的就行了。好,这个order话呢,我是public的,相当于在各个包下都能看到,哎,即使我把它写成这样的了。即使写成这样了,哎,我是在这儿呢哈,我在这个里边能用吗。能用,因为缺省权限呢,是不是本包内有效?
31:02
本包内是吧,诶所以这块呢,我们在这个里边,我去调用这个order的实力呢是呃,这个调用这个类呢,到对象是允许的啊,即使这个权限比较小也没关系啊。好,这呢我们就能够去造了啊,又因为呢是同个包,所以你泡呢也给省了啊。好,那么接下来啊,你看我们去调用。哎,这个属性,哎,以及呢,调用这个方法,它的一个情况啊。首先啊,Order点。哎,你看我们掉了一个属性啊,此时的话呢,这个private就不行了。从默认这块呢,是可以的。这个呢,都是允许的啊,哎,当你试图比如我们就写到这了啊order.order叫private。哎,我这负一个三啊,这是不允许的。当然这个呢,也有可能是。要写错了是吧。哎,像这个呢,这就容易写错了,他会说呢,你这个属性呢,不存在是吧。Cannot啊,就找不到我们对应的这个属性了,哎,但是你看我这块把这个E去掉呢。
32:04
他写的信息是不一样的。对他说你是一个私有的一个访问权限是吧,诶所以这块呢,是因为权限不够造成的啊,哎,这个是不行好调方法。Order,同样道理啊,Method default,这个是行的。啊,MY第2METHOD public这也行啊,下边呢也是不行的啊。Method,这个来一个叫private是吧,这个呢也会提醒说你这个方法呢,它是有个私有的权限。才不行。好,这个呢,就是我们说,诶这个不能调用的场景啊。好,通过这个的话呢,我们去体会到的点,就是说出了你这个类之后哈,它就不行了。啊,然后这块的话呢,目前还都可以。好,然后再往外扩展的话呢,就是诶,我们这个要体现其他包里了。哎,咱不是不测它了吗?是吧?哎,这咱们直接在其他包里边去测一下,看看这个缺性是不是就看不到了啊。
33:02
好,其他包的话呢,这个咱们不妨就用这个T2了。这就是两个不同的包。好在这个包下我呢去新建一个,诶,我也叫做order的一个test。哎,这样啊好,那么在这个里边呢,我们要想看一下你order里边这些属性能不能调呢?呃,首先我们说的属性方法调都得用对象,所以首先我们考虑的就是造对象了。那么大家看啊,现在这个呢,我这儿写的是一个默认权限的。就是缺醒的是吧,缺省的话呢,只在本包内能看得到。你说我在这块呢去调。找点找对象还行不?不行了。这个写完之后的话呢,这块它就提示报错了啊out,回车一下,那这块会提示啊。诶,看这还出来了是吧。这个呢是咱们之前的,不管它这个是咱们现在这个吧。是这个是吧,好,你看我点一下啊,我点了。
34:01
点了也加了,加了之后你看还报错。啊,诶都倒班了,怎么还不行呢,那这块就提到说你这个呢,它不是公共的是吧。诶,所以呢,你不能够去访问吗。除了这个包,那写的outside package。说这包的话呢,你就不能够去访问了,说的非常清楚啊。所以呢,即使你加了in呢,也不好使,要想访问啊,必须保证你这个order这个类啊,前面呢权限呢得大一点是吧,诶加了PA以后呢,你这时候再看这就没问题了。哎,但是这时候你注意这个导包是不是得必须的。对,你不打包肯定不行啊。这个呢,就是造对象的过程,诶造完对象呢,接下来我们去呃调用这个呃属性和方法哈。好,首先order点,哎,我们先调它的这个属性,你发现这时候呢,光用public能看到了。哎,剩下的那俩都不行。啊,在这写啊。Order private,这个不行。
35:01
Order,这个咱们叫default是吧,这个呢也行。啊,这个私有的,这个也是。啊,不是公共的啊,这样写的是吧,诶所以这两个呢,也不可以啊好,那方法呢,同样道理。所以这块我们看一眼就行啊,Public这个是可以的。剩下的俩都不行。Private不行。哎,Method叫default是吧,哎,这个呢也不行,看一眼啊,说这个呢是私有的,这个的话不是公共的,哎,这个都不行。哎,这个是,哎不能调用。啊,通过这个的话呢,我们就看到出了这个包的话呢,我们就不能够去掉default这种场景的了。哎,都是不可以的了。那么这个public的话呢,你看我们在不同的包下呢,都已经体会到是能调了,那你这一块呢,就肯定是OK的,呃,其实呢,我们跨模块的话呢,也可以考虑呢,去做这种调用,诶这呢不在咱们现在讲解这个范围内,诶但是呢,我们就先忽略掉这个事儿。
36:07
啊OK行,那么这样的话呢,我们就能体现出它这个权限,你看大小是不一样的了,大家呢,通过刚才这个测试呢,把这个表格,那暂且呢,你关于这个protecting你可以先忽略哈,后边我们讲了封装性以后呢,咱们再带着大家呢把这个呢测一下,其他的这三个都要记清楚。最起码你现在把质量呢,你记清楚,谁小谁大,别整串了。就可以。好,那么这样的话呢,咱们把这个封装性呢就讲完了,哎,整体来看的话呢,其实不太难。诶,就是在咱们原来啊类里边呢,有属性啊有方法,诶目前呢,我们主要的场景呢,就是把属性呢给私有化了啊,提供盖赛方法了。哎,那么以后的话呢,如果有些方法你也不想对外暴露呢,你把方法呢,也给他私有化。哎,那如果说我们后边还讲到类里边其他的结构了,比如说我们接下来再要讲就是类中的构造器了,它也是类里边的一个成员,那这个构造器是不是也可以考虑用四种权限去修饰了?
37:06
哎,对,然后到时候我们再看看什么意思啊,关于权限这块呢,就是封装性的体现啊。
我来说两句