00:00
好,咱们接下来再继续再往下看啊,那如果说我们把这些方法定义好之后,接下来我们是不是可以在我们的这个外部去干什么呢?去读对吧?哎,读一下各位怎么读P1现在。又出来了,对吗?所以P一点什么。我再问大家啊,通过person能不能去调这个get方法,通过类名能不能调。通过类名点。可以调用set和get方法吗?不行啊,只有方法修饰符列表中有sta的时候。才能使用类名点的方式访问。你采用点。点什么呀?点这个get age参数没有,你在这里调一下,你编一下这个程序,看看有没有问题,Java所以现在解释不了啊,你只能这样去。
01:15
这样去记忆各位啊,大家看不行,第21行不行,21行是这个。不行啊,错误的错误的啊,今天突然之间又冒出来个新的东西是吧,大家有点接受不了是不是,哎,P1是不是扭出来了,扭出来之后我们通过P去访问这个getage。那么这个get方法在哪呢?在。这个位置上。是不是这个方法返回一个int对吧。是不是返回个int呀,好,那这样的话get it,接下来返回个int,对吧,我们叫做年龄。system.out.printline打印输出年龄这个值应该是零啊,因为你new的new这个person的时候,调的是无参构造,你无参数构造方法调用的时候啊,它这个年龄值啊,它会附一个什么呀,默认值叫做零,就这个值它是个零,所以你在这里调用我们这个get age方法的return,这个age,这个age其实就是零啊。
02:18
那如果你返回一个零的话,在这一块我们是不是就是一个零啊。对吧?p.getage是不是返回一个年龄,诶,我把这个年龄怎么了输出来,我们再去Java c编译一下person test02的Java,然后Java运行person test02。零啊,是不是,哎,这是零,那么大家想一想,上面这两行代码能不能合并成一行。我把这个代码拿过来,这个年龄是谁,是不是就是他,他是不是就是他,所以能不能这样写啊,没问题啊。原先的时候是直接p1.h,现在是P1去调方法,Get h是没问题的啊组合对吧,以上代码联合。
03:09
联合就是这个德行啊,输出什么呀,p1.get,实际上就相当于P1去调getage这个方法。该这个方法返回一个数据之后呢,这个print LN直接就输出了啊直接输出了,这个结果还是零,Java c呢,去编译Java去运行,好大家看是不是零啊,是不是零吗?是不是,哎非常非常完美,那么接下来我们在这个位置怎么着呢?P调用setage这个方法大家看。我们set一个20吧,这个I20SET,为什么这个地方没有返回值啊。因为我们的set方法是不是返回值类型是VO的set方法,传一个参数是年龄,把年龄是不是附上去啊,所以这个时候我们就给年龄给它附一个值啊,没有返回值类型你也不需要接收啊,没有反回值set一个20 set20之后呢,接下来你是不是可以system.out.print再打印输出p.getage啊。
04:02
是不是哎,p1.get,你改了20之后,你再返回S,这个20啊,它会传给谁,会传给他,它会传给他,他就是它,它原先是零,现在改成20了,所以我们再次调get h方法的时候,这个H的值就变成了20啊,这个H的值就变成了20,那么接下来我们再来看Java c去Java去运行,好大家看零二十没有任何问题,对吧?那么接下来P掉S,我故意给他一个什么呀,年龄是负100,那么这个时候呢,我再去访问这个年龄,看看这次行不行,P点。因为你掉了setage,你给它附上了负100,那么接下来你getage呢,拿到的值是不是也是负100啊来,那么接下来我们再去编译,再去运行,好大家看最后结果是不是负100啊,有同学说老师你这不白折腾吗?你折腾了半天,最后该不安全还是不安全,年龄这空这块没控制住啊。
05:01
各位年龄就是没控制住啊,就是就是你折腾是吧,哎,折腾半天了,这不是。结果还是没控制住吗?这不还是非法吗?诶同学我还没写完啊,你别心急,你看好了啊,我们既然写了一个set方法,那么我们的操作入口只能通过get方法或者是set方法作为入口,是不是?哎,进来。那么我们在这个入口上能不能设立关卡,就是我们能不能能不能在这个能不能在这个位置上设置关卡。啊关卡这个关卡是可以设置的,明白吧,你比如说你可以判断一下,它将来调这个方法的时候,你传过来一个年龄,这个年龄值如果是个负数,对吧?哎,If你可以判断一下啊,如果这个年龄啊,它是小于什么呀?零或者说呢,我们这个年龄值呢,是大于多少啊一百五的,我们认为就就是非法的。
06:07
你直接塞这么点out print打印输出是不是你输出一句话,你说对不起,年龄值不合法。请重新复制。呀,是不是程序就直接return结束了,直接终止程序的执行,直接终止程序的执行,这样的话,大家想一想,我们之所以提供这样的方法的目的是说让他通过这个入口进来,是不是通过这个入口进来执行,那么在入口进来执行的时候,我们是不是就可以设立关卡,就像我们这个,比如说呃这个,嗯,现在这个疫情时时时机是不是,哎你像你像我我我我老家,我我们这个老家啊,我是河北邯郸的,我们那儿呢,哎,我们那村啊都封了。是不是所有的这个。口如果都开着,他可能怎么着啊?哎,就不好控制,他干什么呀,他把所有的路口全封住,整个村只留一个口,然后这个口上干啥呀?哎,派一些人去呢。
07:09
哎,看着是吧,哎,谁从这过的话。诶,谁要从这过的话,那不让他过呀,是不是,哎,所以说这会儿这就是一个安全的一个控制,就像我们这个一样,Setage这个方法执行,对吧,你刚才没有设计这个关卡,所以呢,哎,不安全,那么大家想程序如果执行return方法就结束了,对吧?程序能够执行到这里,说明年龄一定是合法的,你想想是不是到这儿是不是一定是合法的,既然合法是不是通过等号的方式就给它赋值啊。是不是啊,哎,所以这个程序现在就完美了,就完全给它控制住了,这就是封装各位啊来,这就是封装,我们去编译一下各位。Java c编译Java运行这个运行结果大家猜测一下是什么,我们推算一下啊。推算一下,首先在这儿是不是零,然后S h20之后再获取是不是20,然后呢,负一附上这个100,给它附上100的时候,大家想一想,给他附上这个100的时候是不是失败了,这应该说出一句话叫什么呀?叫年龄怎么着?哎,不合法是不是?哎,年龄不合法程序就直接结束了,那么c.out.print打印p.get最后的结果是多少啊?
08:23
因为之前你已经给P1付了一个年龄就20了,你这样获取是20,你现在没给他附上去,所以这边获取的值还是多少啊20这样的话是不是就安全了。对吧,哎,你再去执行这个最后的结果就变成20啊,所以接下来我们再去运行大家看。来我们再编译一下啊,重新Java c编译加运行,好大家看,对不起,年龄值不合法,请重新赋值,然后20你看。是不是上面输出20,下边输出还是20,这样的话,这个年龄是不是就。就安全了,就彻底就控制住了,对吧?哎,封装的代码实现啊,封装的代码实现两步,各位啊两步。
09:06
两步啊,第一步属性私有化,第二步对外一个属性对外提供两个set和get方法,Get和get方法。啊。嗯。外部程序只能通过set方法修改。啊,只能通过get方法读取。可以在set方法中设立关卡。啊,来保证数据的安全性啊,这就是封装,各位啊,这就封装。
我来说两句