和一套优势get方法VS公共变量[复制]和一套优势get方法VS公共变量[复制](Advantage

2019-06-17 10:02发布

可能重复:
为什么要使用getter和setter方法?

它有什么优势,以制作方式来访问你的类私有变量,而不是使变量公众?

例如是第二种情况比第一批好?

//Case 1
public class Shoe{
    public int size;
}

//Case 2
public class Shoe{
    private int size;
    public int getSize(){
        return size;
    }

    public void setSize(int sz){
        size = sz;
    }

}

Answer 1:

我已经在等哪天看到的,因为答案(由@ ChssPly76书面)为什么要使用getter和setter

由于2周(月,年)从现在开始,当你意识到你的制定者需要的不仅仅是设置的值做多,你也意识到,财产已经在其他238类直接使用:-)

还有更多的优点:

  1. getter和setter方法可以在其中有验证 ,字段不能
  2. 使用getter就可以得到想要的类的子类
  3. getter和setter方法是多态的 ,字段不
  4. 调试也简单得多,因为断点可以放在一个方法里面不近,鉴于场的许多引用。
  5. 他们可以隐藏实现的变化

之前:

private boolean alive = true;

public boolean isAlive() { return alive; }
public void setAlive(boolean alive) { this.alive = alive; }

后:

private int hp; // change!

public boolean isAlive() { return hp > 0; } // old signature 
 //method looks the same, no change in client code
public void setAlive(boolean alive) { this.hp = alive ? 100 : 0; }

编辑 :一个额外的新advange当你使用的是Eclipse -您可以创建在现场观察点,但如果你有二传手你只需要一个断点,并且断点...(例如setter方法)可以是有条件的,观察点(现场)不能 。 所以,如果你想阻止你的调试器只有当x=10 ,你只能与内部二传手断点做到这一点。



Answer 2:

使用公共变量可能会导致作为输入值不能检查错误的值设置为变量。

例如:

 public class A{

    public int x;   // Value can be directly assigned to x without checking.

   }

使用设定器可以用来设置变量与检查输入 。 保持实例varibale私人和getter和setter公众封装 getter和setter的形式也与Java组件标准兼容,

getter和setter还有助于实现多态的概念

例如:

public class A{

     private int x;      //


      public void setX(int x){

       if (x>0){                     // Checking of Value
        this.x = x;
       }

       else{

           System.out.println("Input invalid");

         }
     }

      public int getX(){

          return this.x;
       }

多态性例如: 我们可以从调用方法所调用的方法的超级类参数的对象Refernce变量分配Sub型作为参数的对象Refernce变量。

public class Animal{

       public void setSound(Animal a) {

          if (a instanceof Dog) {         // Checking animal type

                System.out.println("Bark");

             }

         else if (a instanceof Cat) {     // Checking animal type

                 System.out.println("Meowww");

             }
         }
      }


Answer 3:

  1. 一些库需要这种履行“Java Bean的标准”。
  2. 甲设定器/吸气剂可以是一个接口,一个属性不能在接口
  3. 二传手/ getter方法可以很容易地在下降类重写。
  4. 值是否是按需或只是一个访问的属性计算制定者/吸气抽象掉的信息


Answer 4:

有点倒退的方式看待事物。

有没有在那里,最好通过制定一个成员变量公开暴露你的类的内部运作任何情况下,所以它的任何消费者可以做的事情从来没有concieved的设计师,导致失败的盛宴和崩溃的聚宝盆?

排序答案本身确实是一个简化版,它?

OO的基石的原则,封装。 公共成员变量基本上是一个前缀全局变量...



文章来源: Advantage of set and get methods vs public variable [duplicate]