00:00
那么接下来呢,咱们去写一个例子,好吧,在这个地方啊,我又建了一个新的目录,叫CHAPTER10第十章,点右键呢,我们去新建一个什么呢?我们去新建一个类啊,我们这块呢,我们就叫person吧,就叫person啊,Person。Person啊来,那么这个person呢,这是一个人人类是吧,这是一个人类啊。来我们把这个呢打开啊,Person啊表示人类啊,表示人类每一个人对都有年龄这样的属性,对吧,都有。这样的属性啊,年龄。Age int类型,那么这个时候呢,我可能在这呢写一个class叫person是不是,然后呢,加上去一个int类型,这个呢,其实就是它的实例变量,或者叫什么叫做属性对不对?哎,实例变量属性啊,那么这块呢,我们把这个呢定义好之后呢,我们现在啊,就并没有用封光对吧,我们这里其实并没有使用封装啊,大家分析我们这个程序存在什么样的问题好吧。
01:12
哎,就是说我这里啊,先不使用什么呀,封装机制啊呃,分析程序存在,呃什么缺点好不好,哎什么样的缺点啊,那么这一块呢,我们就这样啊在这呢,我们直接呢去新建一个比如person test啊person test来接下来我们在这儿呢。哎,打开之后啊。嗯,写吧,Public class是不是I person test,然后呢,我们public stemman啊主方法加上去,现在呢。大家想我们现在是不是并没有在我们的这个person这个类当中,对吧,这属于外部程序吧,哎,在外部程序中访问什么呀?哎,Person对不对,Person这个。
02:01
类型中或者person这个类型中的数据啊,那现在呢,我们这个person其实并没有封装,我说了啊,在我们这个person test里边我们干什么呢?去访问我们这个里边的数据,看看能不能访问,好吧,来访问一下,那首先第一个我们的创建person对象对不对?哎,创建person对象怎么创建呀,Person PE等于new一个什么呀,Person是不是?哎,Person new出来了,那现在呢,我们访问什么呀?访问这个呃,人的人的年龄啊。访问一个人的年龄有两种,一个是读,一个是改,对吧?啊一般啊注意访问一个一个对象的属性啊,通常包括什么呢?两种操作,一种是,一种操作是什么呀,一种是。读啊读数据一种是什么呀,改数据改数据各位啊。
03:05
就访问人的年龄啊,访问一个对象的属性通常包括两种操作,一种是读数据,一种是改数据,啊来我们先读数据,各位读数据,那么读数据system.out点打印,我们输出P点,好,大家看这是不是就读的操作呀,读的操作呀是不是哎读我们也可以叫做get获取啊get表示哎获取啊那现在呢,我们去编译去运行这个程序,看看行不行。来Java c呢,去编一下person test,然后点Java,然后哎,Java运行person test走好大家看最后的结果是不是零啊,那么接下来我们能不能在这修改数据呀,对吧?哎,修改数据呢,p1.h,我们都改一下,改成什么呀,50是不是改完之后我们再去读修改数据呢?其实我们有一个说法叫set啊,表示什么呀,表示修改啊或者是设置啊都可以,那么这边呢,改完之后呢,我们再去读这个数据的话,那么怎么去读啊,p1.h对吧,这是再次怎么着啊,再次读取,那么这个时候呢,我们再来Java c编译Java去运行,好大家看。
04:13
是不是原先是零,现在改成50了,对不对?好,那么接下来大家想一想。由于在我外部的程序里边,我可以随意的去访问你这个person这个类型当中的这个age属性,是不是那我可以随意访问,那么是不是就意味着我可以随意扶持呢?对吧?哎,在test这个叫person test。这个类当中这个外部。这个外部程序中,目前是可以随意对age属性进行操作的啊,对age属性进行操作的,那么这个时候呢,我们就随意的来p1.a改呗,对吧,负100好,那么接下来system.out.line打印我们这块其实还是改呀,各位对吧,哎,还是改是不是,然后呢,这个位置我们还是什么呀,叫做读。
05:12
对不对,好,那么这个时候呢,我们p1.a读一下来我们这边呢,写上一句话叫什么呀,就是您的年龄值是多少啊来我们再去编译一下Java c呢去编译Java去运行,好大家看你的年龄值是负100。大家都知道,一个人的年龄不可能为负数,对吧。是不是?一个人的年龄值不可能为负数,一个人的年龄值不应该为负数,程序中出现了负数,但是并没有报错,对吧?哎,就是程序中啊,程序中给年龄赋值了一个负数,按说是不符合业务要求的啊,但是程序目前还是让他通过了啊,其实这就是一个bug啊,其实这就是一个程序的bug啊,一个程序的bug,那这这个问题是什么原因呢?是因为啊,咱们这个age这个属性啊,它呢。
06:17
怎么着呢?他可以在外边儿程序随便访问。明白吗?你比如好比说你们家买了个电视机,你们家买了个电视机啊,你们家的孩子啊,假如你将来结婚了,你有个小孩,有个小宝宝,是不是这个小宝宝比较比较什么呀啊,比较调皮嘛,是不是啊,你买了一个电视机,结果呢,你个电视机啊怎么着啊,哎,不是封装型的,明白吧,不是封装的啊。就是没有那个壳是不是,哎,那么这个时候呢,你家宝宝走到电视机前对吧?哎,用个棍一戳妥了,你的电视就就坏了是不是啊,你的电视就坏了,就很容易坏啊,你可以完全暴露出来对吧?你的person这个里边数据数据age对外部来说是完全暴露的啊,是不安全的,你可以随意访问啊,随意访问导致的对吧,随意在这里对。
07:13
对谁啊,对person内部的数据进行访问,导致了不安全啊,不安全,你想一想,你你们家的电视机买回来之后,是不是现在都是封装好的对吧?哎,你是不是手里有一个遥控器呀。对吧,那个遥控器上是不是有简单的按键,也就是说你操作电视只能通过什么去操作呀,只能通过遥控器去操作,你用脚E是吧,踹这个遥控器没事,电视坏不了,对吧?你的访问入口只能通过什么呀,我们的遥控器去访问啊,遥控器去访问,所以呢,我们现在这个并没有封装,我们这个person现在是没有封装的,你看。这是没有封装的啊,这是没有封装的什么呀,Person这个age属性在age属性是暴露的,在外部程序中可以随意访问。
08:11
导致了不安全。对吧,所以这一块的话,咱们给大家体会一下啊,就是这里我先不使用封装机制分析程序存在什么样的缺点,就是person类的。Age属性对吧,Age属性啊,对外道路啊,可以在外部程序中随意访问啊,导致导致了不安全,怎么解决这个问题,怎么解决这个问题呀,那就是封装,那就是封装。封装啊好。这是一个原因。各位。
我来说两句