java类中为什么设置set 和get 方法操作属性

来源:互联网 发布:win7 linux双系统bios 编辑:程序博客网 时间:2024/05/22 11:58
样例一:
class person {
      public String name ;
      public String sex ;
}

如上这么一个类我们可以对它的实体进行:
   起名操作,如
    person1.name = "小明";
  取名操作,如
    person1.name;
样例二:
class person{
     private String name;
     private String sex;
     
      public String getName(){
          return this.name;
       }
}

如上这个类,我们对它只有一种操作:
   取名操作
    person2.getName();
  如果你还想有个起名操作,那就再设置一个set方法。

好了通过前面的两个说明例子,是不是悟到了什么呢,没错了!单纯的将属性公开那我们就失去了对这个类的操控能力,别人对这个属性进行设值取值都可以,你不想让别人设值都不行;而我们将属性隐藏,用方法去操控对属性的设值和取值,那么控制就在我们的手上了。如果这么说还不明白,我改一下上面第二个例子。

  class person{
     private String name;
     private String sex;
     
      public String getName(){
                 if(this.sex !=null && "女".equals(this.sex)){
                        return this.name;
               }else{
                       return "就不告诉你!";
                  }
          
       }

     public void setName(String newName){
             if(this.sex !=null && "女".equals(this.sex)){
                        this.name=newName;
               }
      }
}

上面改造的例子应该看明白了吧,属性私有了,只能通过方法去起或取名字,但并不是谁都能起名或取名成功的。方法中明确了,只有当实体人为“女”的时候你才能起名或取名。这只是个简单的例子,你也可以根据你自己需求去改造起名或取名中的限制。在此只是为了说明这么做是具有一种灵活性,可操作性。


从Java 编程思想的角度来讲,由于Java是面向对象编程,什么东西都是作为一个对象来讲,外部能看到摸到(操作和设置)的只有接口(对应对象中的公开方法)。为了圆这个思想,这个规范,属性就得私有了。其实每一个Java类都是由 属性+方法 构成的。我们对这个类的实例能动的只有方法。这种由思想规范写出来的类对类来说就比较安全;对调用这个类的人或是对象来说也比较省心,他只要关注你这个接口要传什么东西然后得到什么东西,你内部有什么属性怎么实现这个接口的,压根就不关心,多省事。 对了,这种思想学名"封装"。


(最后说明:以上代码是写这个文章的时候纯手写,没有调试运行,如有语法或其他错误请见谅,只是起说明作用)

原创粉丝点击