00:00
好,那么关于继承性的这个知识点啊,咱们基本上也就告一段落了啊呃,应该说呢,面向对象三个特征里边最容易理解的啊,这个其实就是继承性了啊,下边我们来看看这个客户对应的这个练习题,首先呢,第一道题。哎,这呢提到了几个不同的类啊,首先第一个叫man看的类。好,这个类里边呢,我们定义了两个成变量啊,两个方法,然后呢提供一个具体的子类,继承这个浮类,然后呢,额外的又提供了一个属性,一个方法,然后呢做这个测试,OK,好,那首先呢,我们把这个呢CTRLC粘过来,创建一个类。哎,这个叫呢,Manhand是就他啊。好,这块我们CTRLV粘过来。哎,这么着啊。好,这块我们直接呢来去做这个声明,呃,这里边呢,提到了这个纯面料啊,Int型的sex啊,Int型的salary,呃,咱们这儿呢,做具体的这个呃练习了,尽量我们把它写呢,就规范一些,像这种属性的话呢,咱们就都私有化吧。
01:00
Int型的这个sex,它这个呢,用的是int来表示的啊。那咱就尊重他这样的一个题面的要求啊,Int型的一个sex,然后int型的salary OK了,好,那这个写完之后呢,我们可以考虑呢,给大家提供对应的概算方法。啊,这个alt加insert,找这个get方法,两个都要。啊,然后呢,没有提构造器的事儿啊,你也可以呢,给大家再去提供对应的这个构造器,构造器呢,我们习惯性呢,一般先提供一个空参的啊,再呢,给大家可以再加一个这个参数比较多的,比如说全参数的,呃,就是把这个属性呢都给它做初始化的啊。好,那构造器就完事了,接下来呢,提供两个方法啊,我叫man or woman,根据这个sex它的这个值呢,来判定是男的还是女的啊。好,这个的话呢,我们写的话就写到后边了啊。哎,Public avoid啊叫好。And woman。哎,这样啊,然后在这个方法里边呢,我们去调用当前类中的这个属性叫S啊,说这个要一的时候呢,是难好,那就这样呢,写这个if啊。
02:02
If呢,这个3X啊,等等于一。哎,这个我们就,诶这个是Y是吧。啊,那这块我们就直接输出了啊。哎,啊,这个呢,我们就写成叫慢啊,Else if s呢,如果是零。哎,这个叫哎woman啊。哎,这就可以了,好,然后呢,其他这个情况没说没说我这个就不写else了,咱们讲这个if else的时候呢,也提到过,Else呢是可以没有的。接下来这呢,有一个叫employee的啊,说根据salary salary呢,如果是零就是没工作啊,如果不是零呢,就是有工作的。Public employed啊这样。啊说衣服啊说如果呢,这个salary哎,它呢是相等于零。哎,这个我们说呢,叫no job。哎,这样啊,好else。这个呢就不是零,不是零的话呢,我们这个就说有工作啊,这个叫job。诶没问题啊好,那么这个呢,我们就设计完成啊,接下来的话呢,我们看他的这个此类啊,叫做kids啊,这个就孩子啊呃,让他呢去继承于这个maca,那manca也翻译成这个叫算人类了是吧。
03:12
嗯,但是这个时候呢。男人嘞。就是人类是吧?嗯,Human有人还丢呢啊,这human这也是一个男人是吧?嗯,好,这个呢,让他去继承于这个慢看的啊。右键新建一个kiss。去extend,咱们刚才这个man看的好,那么这样一继承的话呢,刚才父列当中声明的属性啊方法呀,就直接过来了,注意构造器的话呢,咱们就不提说直接就继承过来了,我们后边讲super关键字的时候呢,会提到我们可以呢在此类当中调用类中的构造器。啊,暂且呢,我们就先不说构造器的问题了。那么继承完以后的话呢,这块呢,额外的又增加了两个这个属性啊,一个属性一个方法。回过来。啊,粘过来。行,这块我们就做添加就行啊,Private int型的啊,这个我们叫。
04:04
Years old啊。哎,这个呢,就是你多大了啊好,那么针对这个属性呢,我们也去提供它对应的概算方法。哎,这样就可以了啊行,构造器呢,咱们比如说也整一个啊,哎,构造器呢,你可以先啊public先整个key,这是我们自己写的啊,这是属于一个空参的。啊。好,再整一个这个带参数的。Public。哎,啊,这呢,针对我们这个叫years old。这样啊。啊,Z4点啊eo的啊eo的,哎,咱们已经讲过这个Z次了,好然后的话呢,有同学说说我能不能再提供一个构造器,说把类中的那几个属性也给它做了一个赋值呢?哎,其实也是可以的。啊也是可以的啊,这个只不过呢,目前我们这个写法呢,可能是稍微的。难看一点啊,什么意思,你看比如呢,我们这个manind里边是不是有这样两个属性是吧?诶CTRLC1下回过来,我想呢,在创建一个case对象的时候呢,把这俩属性呢,也给赋一下值。
05:05
诶顺便呢,再把我们自己这个呢,也附上值。有这样的想法,这个想法的话呢,其实是不过分的啊。哎,只不过呢,目前我们要是写的话呢,那怎么写呢。这个好说是吧。这个呢,你就自己给自己付就行了,关键呢,就是这两个咱们就要行参了啊,怎么给你父类继承过来的那两个属性赋值呢。对,目前的话呢,我们这个你所谓的Z4.2S等于S,不不好意思,这个看不到了,那因为呢,我们福类中已经是私有化了是吧?哎,那看不到了,这块我们就不能这样调了,现在呢,能用的是不是只有方法了。对,咱们这个叫set这个是吧。哎,你只能是这样啊,我们把这个给它附进去。诶,然后下面你再set一个,Set一个这个叫。A salary。然后把我们这个salary呢,给它放进去,目前的话呢,我们只能这样去做。啊,那么后边的话呢,咱们讲了修破以后呢,哎,可以有更好的写法,哎直接呢,在此类构造器中呢,我们去显示掉负类的构造器啊,到时候我们再说啊,这个是我目前的这样的一种方案了。
06:07
好,那么关于我们这个类呢,也设计完了,下边就是一个具体的测试啊,CTRLC。新建一个这个我们叫的一个测试。啊,在这啊。好在这里边的话呢,我们main方法中啊,这个去实例化case的对象,然后访问父类中的这个成员,OK,主要呢,我们想体现的就是这个继承性的特点了,所以这块呢,关于这个manin的这个对象的创建呢,咱们就不争了啊,直接呢我们就造这个case这个类的对象。好创建好了,创建好以后的话呢,我们通过这个K啊K这个对象呢,呃,属性呢,没有直接对外暴露。啊,所以这块我们只能是通过方法去处理了啊,我这块呢,用的是空单的构造器里边呢,其实什么也没有啊,所以呢,这些所谓的属性呢,都应该是默认值了,诶首先我们通过set一下,比如这个S啊,比如写个一了。啊,K的点一个它的salary啊这个。
07:02
这就成同工了是吧?来一个吧,100块钱是吧,好K的点这个我们再去啊晒它这个叫years old的啊,比如说这个。嗯,12岁,哎。这就可以了。好,这样的话呢,我们说哎,通过这样的相关的赛的方法,我就给这个对象的这个属性呢,就附上值了。啊,那么这个事儿的话呢,其实大家仍然可以通过这种debug的方式来查看一下啊,你看我把这个这呢打一个断点啊好这块我们就直接呢做这个debug。啊,大家看啊,哎,然后呢,我往下呢,走一步啊,就走到这儿了啊,这一步的话呢,并没执行上面这步执行了,执行完以后,我们在内存当中,你这个对象呢叫kid。变量名啊,然后呢,堆空间当中呢,你这个对象实体呢,你看我们有仨属性。呃,其中呢,我们自己呢,定义了一个叫years old,然后呢,你来自于负类的话呢,有俩sex和salary,你看都是有的啊,只不过呢,这时候因为我们使用的是这个空三的构造器,所以呢属性呢都是默认值,然后接下来我通过叫set s设置为一啊,往下走一步,这个呢就执行了,然后在这个方法里边呢,给我们这个S呢,这就浮上值了。
08:07
然后再往下走一步,Salary呢,也浮上值了100,然后再往下走一步,Years old呢,浮上值了12。诶,所以呢,这个属性都有啊,而且呢,通过相关的方法呢,都赋了值了。啊,这个我们就结束了啊。好,那不管这个不管这个属性有,然后我们还可以呢,通过这个case k呢,我们去调用相关的方法,比如说呃,Employee啊,K点啊,还有我们这个叫嗯,Sex那个马woman啊,这两个方法呢,都是来自于这个负类啊。呃,来自于啊父类中,哎,声明的方法。嗯,OK啊,然后呢,你自己呢,还定义了一个。啊,这个我们叫years old是吧。嗯。那个是怎么着来着。看看啊。哎,我是忘写了。
09:00
忘写了哈,这个叫print age啊忘了啊说打印呢叫years old,行,咱们把它呢写一下啊C。这个呢,比如就写到后边了啊,说public avoid啊,Print age这里边儿啊说。I'm是吧?叫。Years old啊。哎,12OLD啊,这样就可以了,好,那么回过来啊,那么你自己这块呢,这是刚才定义了一个方法啊,叫做print age啊,这个我们就可以来调,这是你自己的。好执行一下,那其中呢,这两个方法呢,是来自于你的负类,这个呢是你自己写的啊I'm啊,12岁了,这不是在这赋过值吗。这个是我们这个,嗯,K这个类。哎,自己,哎声明的这个方法啊,好,那么这个练习呢,咱们就说完了。哎,大家体会一下,就这个此类呢,继承负类之后呢,就是获取福类功能啊,这样的一个特点啊。好,这呢就是我们说继承性的一个核心。哎,这个完了以后呢,我们接着来看这个第二道题啊,第二道题呢,是这样子的,所呢我们这里边呢,呃,声明有两个具体的类啊,这个类的话呢,一个叫圆。
10:08
啊,另外呢,叫圆柱。啊,一个是圆,一个是圆柱啊,这呢,我让这个圆柱呢,就继承这个圆了,在现有圆的基础上呢,我们做功能的扩展啊,因为圆呢只有这个,呃,所谓的半径的这样的属性。所以它这个高呢,是是没有这个概念的啊,哎,那么圆柱呢,在它的基础上呢,我们就拓展成有这个高的属性了。OK啊,来,我们就设计这样的一组这个关系,首先我们来看一下,这个叫circle啊。先把他的盯一下。新建一个类。哎,好创建一下啊,把它呢稍微的整小一点,好在这啊好private。哎,这个是double型的radius。OK啊,这个呢叫半径,哎,没问题,好,接下来的话呢,我们提到一个构造器,就在这个构造器当中,将read的这个值呢复制为一啊。我们就自己来写了,哎,Circle。
11:00
哎,这么着,哎它呢,就相当于是通过参数呢,这块呢,就不要复了,因为没有参数直接呢,你在这里边直接调我们这个,哎,这个成序变量是吧,哎复制为这个一。就这样就可以了啊好,这个前面呢,你这个这四点呢,加不加都可以了。呃,这样的话呢,理解为就是正在创建的这个对象啊,得半径啊。好,接下来提用在我们这个属性的get和set方法,这个比较简单,我就直接生成了啊。哎,点一下我们这个OK一下啊,没问题。好,下面的话呢,我们有一个计算圆面积的方法。啊,范围之内是double。Find area。啊,这样我们就直接return了啊,嗯,这个咱就直接3.14乘以。哎,Radius再乘以radius,诶是不是就可以了。这个呢,你可以在这标识一下啊,叫求圆的面积好。搞定了啊。诶就这样来写这个呢,就是咱们之前的这种题目的这个场景了,好,那么在这个基础之上呢,我们去提供他的这个子类啊。
12:04
就写这个叫。Cylinder吧。哎,他啊好让他呢去CE它这个circle,哎这个圆啊好这个呢叫圆柱啊。哎,这个我们在这儿写一下吧。圆柱类。行,那么继乘以我们这个SQ的时候呢,相应的我们SQ里边这个属性方法啊,就直接过来了。诶,那么同时的话呢,我们还声明有自己特有的啊,Double类型的叫Les。啊,这个我们叫高。啊可以了,好,那对应的这个高呢,盖塞方法啊,Alt加insert,我们再去自动生成一下啊OK。没问题,好,接下来再去提供这个构造器。哎,Public。Cylinder。哎,这样啊,说呢,在这个构造器里边呢,说你把这个Les呢,复制为一,哎,我们调自己的这个属性。复制为一啊,这个没问题啊,相当于呢,你创建的这个对象呢,它的属性呢,就都是一,只要造个圆柱啊,圆柱的高呢,就都默认的是一啊。
13:06
哎,下边有一个叫求体积的一个方法。哎,这个叫球啊,圆柱的体积啊,这个你得会。这个公式啊。Double,这个我们叫find volume是吧。哎,这样啊,好体积的话呢,这个公式是。底面积乘高是吧,哎,底面积底面积这就是你对应的那个圆的那个面面了是吧,那这边怎么写呢。哎,那就是3.14哎,乘以底面的那个半径。那个半径呢,其实也是你圆柱继承过来的那个半径的属性啊。嗯,这个呢,直接写瑞是不行了。因为你看不见了是吧,哎,所以我们只能是叫。哎,Get这个readers,对,然后再get这个readers,哎,这就相当于你底面的这个面积啊,然后呢,再去乘以一下。
14:01
高啊高lengths啊,诶你要说这块不太对齐,这是用的方法,这用的一个属性,那你这个叫get LAS。也行。因为它返回来就还是lengths啊,这就可以了。诶没问题是吧,好,那么诶对有的同学呢,可能会这样想哈,所以呢,我这块return的时候你发现呢,前面这个不就是。底面的那个面积是吧,那个面积呢,你在复类里边是不是还有那个方法,而且还记承过来了,哎,所以呢,他就想直接呢,我就要find的area,哎,再去乘以这个get length。行可以吧。诶,目前来说是没问题的啊,这个呢,就是你傅雷拿过来方法,这个里边呢,写的不就是它吗。来这样啊,OK,好这呢,就我们求体积这样的,这个方法就。完事了啊,这个完了以后呢,我们就可以直接呢去做相关的测试了。啊,这个我们叫CY的一个测试,这样啊好没方法进来。哎,这块呢,我们说继承性主要呢,咱们关注的还是这个子类的这种场景啊,所以在这儿呢,我上来就直接造这个圆柱了啊。
15:03
哎,你有一个啊三的这样一个实例。好,算完这个实例以后呢,我们去set一下它的这个readus啊,比如来个2.3啊,哎,设置一下它的这个高啊,比如说这个1.4。设置了底面圆的半径,还有它的高,然后呢,你再去调这个球。呃,Find的这个volume洗衣机是吧。哎,这话我们写一下啊。圆柱的体积为啊,这样我们加一下就可以了。好,还是这个道理啊,你看我这块我加个断点,然后呢来一个debug。诶,看一下啊好,那么接着往下走一步,哎,关于我们这个圆柱呢,这个对象我们就创建好了,哎在内存当中呢,我们发现它有两个属性啊,Radius呢来自于负类的啊,Less呢是自己的。哟,大家好像看到一些信息哈。发现了没有是吧,我们这个cylinder呢,是咱们生命力构造器,这个构造器呢,呃,确实我们把半径呢,是不是把这个高呢,是不是设置为一了。
16:02
哎,这点1.0,这这自动力提升了啊,诶,那这一半径看。是吧,诶半径的话,你发现它也是1.0。啊。这个的话呢,咱们先这样看,先这样看这个呢,就要解释它的话呢,需要用到咱们讲的这个对象啊,这个对象呢,是叫cylinder实际上是此类对象是吧。这个子类这个对象啊,在创建的时候呢,它有一系列的过程。哎,它在创建的过程当中啊,其实要调富力的构造器了,这个咱们讲super的时候呢,就说了。啊,暂且的话呢,大家先忽略啊,因为你发现的这个要想得到一,它一定是不是掉过。你这个圆的这个事儿啊。要不的话也不可能是一是吧,哎,那么这个调的事呢,咱们先忽略啊。好,暂且的话呢,大家你先知道呢,有俩属性,然后下面的话呢,我们通过这个set的方式,先把半径改成2.3了,呃,再走一下,把LS呢改成1.4了。
17:00
然后再往下呢,求你体积,那你该多少就多少。啊,这块我们计算的结果cons在这儿呢啊。哎,就是这是第八个啊,这个呢是console哎,在这块就能看得到啊行,那这个就完事了啊,咱们就直接诶让他结束。哎,就可以了。OK啊,这个呢,就是我们创建的这个此类的对象啊,大家呢,去体会直接呢,能够拿到负类中的这个属性啊方法呀啊就都过来了啊这个这不也是负类中的方法吗。哎,包括呢,这块如果啊,你要想去调,比如说CY拿它呢去点叫find area。这也能掉啊。但是只不过呢,这时候你要写清楚这是什么意思。对,这是你圆柱的底面积了是吧。哎,这样的是可以的。那圆柱的底面的这个面积啊。好,这呢就是我们说的这道练习题啊,那么关于咱们的继承性啊,相对应的这个练习呢,我们就这样了。OK啊,大家呢,熟悉熟悉。好,那么关于绵羊对象的特征二啊,叫做继承性啊,咱们就告一段落了啊,不是特别难啊,主要呢,大家呢,你下来呢,把练习呢,做一做就行。
18:07
呃,那么接下来的话呢,我们看基于继承性的一个知识点,叫做方法的重写。那么讲这个重写之前呢,咱们先说一下这个前面讲封装性的时候提到过,叫四种权限修饰了。啊,具体的大家呢,肯定也都清楚啊,那么在这个修饰里边呢,我们有一个关键字呢,其实没有给大家呢去细说啊,就是那个protected。对,翻译过来叫受保护的啊呃,因为呢,它呢,权限调用的过程当中涉及到了就是在他不同包的此类的问题了。咱们当初呢,没有讲子浮类啊,那现在讲了继承性了,我们就可以演示它的一个使用。啊,那么关于这四个关键字,诶它呢,对应的这个权限的大小,咱们再讲封装性的时候有个表格,那所有的同学呢,这个表格呢,需要会啊,要不呢,回头我们在不同包下呢,互相调的时候,你发现你自己都整不明白,报错了,不知道什么原因,哎,可能是由于封装性的原因造成的。
19:00
要会啊好,那下边呢,咱们给大家呢,去再测试一下不同的权限的这样的一个场景,哎这儿呢,我就在这样的两个包下呢,去做演示啊就足可以了啊好,那么首先呢,在这个TEST1下边呢,不妨我还是创建一个类,这个类呢我就还叫这个order了。这个类的这个权限呢,比较大啊,是public的,相当于你挎包呢,我们可以让你访问啊。啊,那么在这个类里边呢,咱们声明啊,四种不同权限的属性和方法吧。哎,这个我们都都叫int类型啊,还有叫private。这个呢是默认权限的。An order,但default。Protected这个呢,就来了啊。Int类型的。An order。这个单词得会念啊。An order public。行,这个呢是几个属性,那其实呢,我们就拿属性测呢,就足可以说明问题了啊,但是呢,这个咱们为了体现方法呢,也很常用啊,所以我把方法呢,我也写一份。
20:01
这叫method private。啊,这个我就直接呢整四份儿啊。哎,第二个呢,这个就是默认权限啊,不要了。Default。嗯,然后这个是protected。Protected public。诶,Public好,这下呢,我就定义了不同的权限的属性和方法了,哎,那么在你这个类内部啊。这个都可以访问啊,我就随便呢写个方法啊,好在这个方法里边呢,比如我们去调了一个属性,你看这属性的order private default protected public啊,全都可以。那咱就都来一个吧。Default。哎,这个没问题啊,Protected。啊,没问题的。没问题啊,这个都可以调啊,具体这个值呢,这个就不重要了啊,就演示一下我们是可以调的,然后方法这块呢,也都没问题。
21:04
啊,四个呢都行。诶你看诶这个都是OK的,好,那么这个呢,就体现了,就是你在私有在内,内部也是可以看得到的。你要类内部都看不到了,那你这个定义就没什么意义了啊,谁都不能用是吧,那就没有用了,好那么比它呢,稍微大一点呢,就是在同一个包当中啊,另外的这个类里边,比如说我们这儿呢,就order的一个测试了。哎,这个我们就test了,好,那这呢,比如我们整一个may方法呀,或者你不是没方法也行,哎,就是普通的一个方法,这个都可以啊。诶,比如叫一。好,那么在这个方法里边呢,你想要调用我们order里边这个属性和方法,你跟人家又没有子复利关系,也没有继承性的关系,所以这呢,你要想用只能是得通过对象了,所以我们就得诶先创建这个order的对象啊。哎,这呢,我们就造好了,造好对象以后的话呢,我们说哎,通过对象哎来调用这个order类中的。
22:05
Orderly。哎,当中,哎声明的这个属性啊,或者是方法呀,啊,首先我们来调这个属性啊,首先呢,我们这个叫order,你看下边我们能调的话,就没有这个私有的了。这个default呢,应该是可以的啊。哎,这个我们就相应的复制一下,哎,你可以呢,是这个叫protected的。Public的呢也可以。你看这都没问题啊,哎,你要是试图啊调这个所谓的私有的。哎,我们叫order,哎,Private是吧,这个呢,注意是不行的,哎这个爆红呢,他就说你这是一个私有的一个权限啊。这个并不是我这个单词写错了啊,你呢最好呢,你也可以从这块儿呢粘一下啊,CTRLC过来啊,一粘啊,这肯定粘不错。哎,真的就是不能调的意思,权限的原原因啊。受。哎,这个,哎,封装性的影响。
23:01
哎,不能够调用。OK啊好,那么方法的话呢,类似啊,通过这个order点,我们标了一个所谓的method啊,那么这几个呢都是可以的。Protected。诶,Public的是吧,诶这块我一边测一边测呢,大家一边呢去,诶记一下,回忆一下我们说的那个事儿啊。好,那么对应的呢,我们另外的一个方法method private,哎,这个呢就不行。啊,这个你也可以呢,这块啊CTRLC啊粘过来这样呢去看啊,确实不行啊,那这两个呢,我们就注入掉了,所以呢,就是出了你这个类本身啊,在同一个包下呢,私有的是不行的。哎,那么再往外扩一点,那就是不同的包了。那同学你怎么不测一下同一个包里边这个呃,子类呢?没必要。是吧,啊,你说我在这个T一下呢,我造一个order的一个子类了,那首先你私有的本身也用不了。
24:02
因为出了这类谁也用不了啊,哎,那你这块呢,是不是子类呢,也无所谓了,反正这个default的话呢,他在同一个包里都能看到,你不是子类也能看到。更何况子类了是吧?诶所以这儿呢,我就不去造子类了啊,那么除了这个TS1之外呢,呃,T子二呢,就是相当于一个新的包,那么这个包下呢,诶我们稍微的扩展一点,虽然呢是不同包的,但是呢,它跟这个order类呢有关系啊,就是子浮类的关系。哎,我叫sub order,哎,让娜娜去继承于咱们的这个order。那由于呢,你是在不同的包下了,所以呢,我们在这个类里边使用别的包下的类是不是一定会有inport的,对吧。哎,这要注意好,其次呢,我们顺便呢,再说一这order哈,Order呢是一个类,本身呢,它也有权限。两种啊,一个呢是public。一个是默认的是吧,那如果说我把这个给去掉了。啊,你看这块呢,说你有相关的这个问题,就是在我们这个萨包这块。哎,你发现呢,这时候啊,由于呢,你挎包了,诶挎包的话呢,你这个类呢,就看不见了。
25:03
因为它是默认权限,你出了包就不行了啊,所以呢,你在这个另外这个包啊,想创建当前你这个的一个子类,哎,你再倒也不行,反正就是你看不见。啊,所以呢,就拒绝你去访问了。那就报错了啊,要想不报错呢,这个只能是加一个public。哎,回过来啊,这个那就没事儿了。所以呢,如果我们声明一个类呢,它仅限于当前包下使用,那你就默认权限。但是一般这种情况呢。少啊,咱们在平时开发的时候呢,一般咱们定义类的时候呢,这个权限呢,通常都就给到public了。啊OK啊,因为呢,他给成public以后呢,我们去限制它里边的这些权限啊。啊,或者我再说一个就是你比如说刚才呢,我们这个order呢,这块你写成是他了是吧,你说我写成它了,我这里边我有public的属性和public的方法能不能行。那也不行,你都看不见这个类呢,你类里边这个公公的,他再公公也白扯。是吧,哎,这个你要注意啊。好,这个我们拉回来,呃,现在呢得是public呢,我们就能访问好了,那么访问的话呢,我们在当前这个子类里边呢,去调一下啊,诶咱们就写个method了,因为呢,你是此类了啊,咱们说没有必要非得去造呃他的对象或者他对象了,这呢我就写一个普通的方法,诶在这里边呢,我们看一下,比如说这个order,哎,我们看都能调哪些哈,诶其实你能看得到了,像这个protective的话呢。
26:24
这个是可以的是吧。然后再复制一份,他这个呢是可以的。剩下的那两个属性的都不行。Order,这个private是吧,Order default。哎,你看这就不行。这块的提示呢,也是提到说你这个权限的问题,那说明我这块我没写错啊。不行呢,你就这块怕写错了你就粘过来。啊,这样粘一下。然后粘这个。哎,这样是吧,诶说明呢,这块确实不行啊,这个呢就是不能访问啊。OK,那这呢,就相当于我们出了这个包了,这个默认权限呢就不好使了。
27:05
哎,那么这时候呢,你在不同包下呢,你要还是子类的话呢,这个受保护的是可以的。接着我们来看这个方法啊,Method对应的这个protected,这可以。Method public呢也可以啊,另外两个不行。啊,一个是他。哎,这个呢是不可以的。还有一个啊,这个default的这个。哎,这个呢,也不可以。OK啊,哎,这块我们看一下仍然是说那个权限的问题啊。不行啊,好注入掉了,好,那么目前呢,我们看到就是你在这个。子类当中是吧,诶他的这个场景啊,这是我们就挎包了,诶然后呢,诶挎包了不是子类这呢就他的,诶更夸张一点这样的一个场景了,呃,这块我就也写上叫order的一个测试吧。哎,其实这块的话呢,我们已经前面都测过了啊,这根弦没方法呀,或者不是没方法呀,这些都可以。
28:02
Public word啊,这个叫就写一个普通方法啊,好,那么你这个类呢,跟order也没什么关系啊,所以这里边儿你要想测试这个所谓的呃,属性啊方法呀,你得造对象了。哎,所以呢,哎,我们就哎你一个具体的order了。那里order呢,它也自动给我们倒班了啊,就T测一下面的。啊,尤其呢,大家要有多个包下都有这个order话呢,你看清楚导的是哪一个的啊,诶别这块一顿写发现,诶我这块定义这个属性呢,怎么这块呃定义方法怎么调不了呢,权限也够,哎你可能导的这个包不对啊,看清楚。好,那么这时候我们有这个order的这个对象了,我就可以调方法了,调属性都可以,诶此时呢,你发现呢,只能调这个所谓的公共的了。哎,公共的属性,公共的方法,除此之外的都掉不了。哎,不能访问的啊,这个咱们就都写一下。从这个默认权限开始啊,这个都不行。
29:00
嗯,这个我这么着吧。这个是啊,这个也行。嗯,一个,诶,还有这个私有的。这个啊。对的,这个。这也不行,哎,把它往上提一下啊out shift上。哎,往上提一下啊好,这三个呢都不行,方法这块呢,同样的道理啊method。啊,私有的。诶,然后CTRLD啊,这是复制啊。Default的。不好使都啊,哎,这玩意看写的这个都是权限的问题。啊,都是权限的问题啊,注意一下啊,好这块我们就把它呢,就注入掉了。好了,那么通过刚才这样演示呢,咱们就把这几种权限呢,又带着大家呢过了一下啊,诶大家呢,就下来自己呢,写的时候你要自己呢,感觉不太熟,你就跟我一样,你稍微测一下,诶你要说诶非常的清晰知道这样的几种权限了,诶那就是后边呢,在写代码的时候呢,到时候你注意一下就行了啊,那么在稍微的总结一下啊,就这个事儿,在实际开发当中,我们这呢讲了有四种权限修饰哈,那使用的频率是怎样的呢?
30:20
诶,毫无疑问,Public其实最高的是吧。呃,那其实呢,也有很多的叫。的,所以呢,我们这块就这两个呢,是使用频率最高的。最高的啊,所以大家呢,在开发当中啊,咱们给相关的属性也好,方法也好,构造器也好,咱们要设置这个权限,呃,就是首先呢,你说我就不设置了,你不设置是不是也是一种权限。对对,就是缺省的这种权限啊,缺省的也行啊,哎,那么一般的话呢,我们在真正开发的时候呢,诶这个权限的话呢,咱就用缺省的就少一些了。就是要么呢,你告诉我说这个就隐藏了是吧,只有我内部用就private,哎,要么的话你就直接给他放开用。
31:05
啊,就public在属性方面的话呢,通常都是private的多。因为呢,诶大家以后写代码你会发现了,我们对于呃前面讲的啊,说造类造对象,通过对象调属性调方法,调属性调方法,反复的强调以后呢,你会发现呢,我们直接调属性的机会呢,会很少。啊,因为属性呢,可以是不是以方法,比如说概率方法的方式呢去体现是吧。或者在其他一些方法当中去修改这个属性是可以的,所以呢,我们一般的这种属性呢,通常就习惯上就不对外暴露了,那这样的话呢,我们把这个属性的就习惯性的就都私有化了。啊,那我们的方法的话呢,一般都是public的。啊这样的啊,那么有一类属性的话呢,我们会声明成的,就是说那些量啊。哎,常练的话呢,我们后边讲到final这个关键字的时候呢,再说。嗯,OK。好,那这呢,就是大家呢,需要落地呢,掌握的这个点,嗯,对于我们看到系统核心的API,它在使用的时候呢,它会非常的严谨啊,我这呢是默认权限的,我这是protected是吧,他是怕我们作为啊这些核心API的这个使用者瞎整是吧。
32:15
就是我这块我要不加private的话呢,这个用户真的就就给你放开了去调了是吧,但是咱们要自己写的代码,哪怕说呢,按说该私有一个属性的,但是我们没有加你就写成public了。那你自己写的时候,你自己注意点不就完了。你说我这个其实不想在外边调,你写成public,你自己写代码,你自己别调不就完了吗。对吧,哎,但是呢,要核心API那不行啊,他要不加private,那你可能真的是瞎整的就开始掉了是吧,但其实他不想让你掉。哎,所以他会很严谨啊,这个注意就行了。好,这个事儿呢,就结束啊。
我来说两句