胡博君浅谈Java属性的封装

来源:互联网 发布:浏览器java插件 编辑:程序博客网 时间:2024/04/29 15:55

         大家都应该知道类里面的属性都加了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
原创粉丝点击