胡博君浅谈Java属性的封装

         大家都应该知道类里面的属性都加了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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值