大家都应该知道类里面的属性都加了private,所以属性被私有化了,那么如果要外面能够调用这个类的属性的话,只能提供get、set与外面对接。大家经常听到这个概念,但是未必真正理解为什么需要私有化,所以呢,今天我就来和大家来谈谈属性封装的本质。
举个例子:
封装前: 封装后:
public class Person{ public class Person{
String name; private String name;
public void setName(String name){
} this.name = name ;
}
public String getName(){
reuturn name;
}
}
以上这个例子其实说明不了给属性封装的好处来,比如说我们现在再建一个带main方法的测试类,然后写上这句代码Person p = new Person(); ,封装前p.name = "老k"; 封装后p.setName("老k"); ,结果似乎完全一致,加不加封装有啥关系?但是我们试想一下,我们是不是还可以在setName方法中加入一些判断呢,比如说我在setName方法中加入:
public void setName(String name){
if(name.equals("小明")){
this.name = name;
}
}
大家通过这个例子有没有稍微看出一点点区别来呢?也就是说现在你想用p.setName("老k");是存不进去值了,为什么呢,因为里面加了一个判断要求name为 "小明" 的时候才能进行this.name = name 赋值,这是不是就好像是被私有化啦呢,也就是说别人现在想传值进来不一定可以,必须按照我的要求来,我只要求传的值为 "小明" 的时候才有用,传入其他的值都是没有用的,所以这就是封装的好处。
现在我们来看一下封装前的代码,p.name = "小红"; 或者p.name = "小白" 或者 p.name = "小黑" 都不受限制,所以这么做是非常不符合我们的生活逻辑的,因为我们生活总是私有化的,比如我们的银行卡密码、我们的身份证号码等。
我录制一套Java视频,现在在慢慢上传,大部分是超清,今后呢我们团队会有大量免费视频出炉,包括Android、php、web前端等,收看网址百度胡博君讲java,或者
网址:
http://v.youku.com/v_show/id_XODQzMTIzNzEy.html,欢迎大家订阅我的优酷视频
百度搜索:输入Fcs_D调的码农 ,或者输入"胡博君"就能看到我的很多视频
加我的微信号fcsboy
加入我的学习交流群:2370536932