一尘不染

设置和获取方法相对于公共变量的优势

java

使方法访问类中的私有变量而不是使变量成为公共变量有什么好处吗?

例如,第二种情况比第一种情况好吗?

//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;
    }

}

阅读 276

收藏
2020-09-08

共1个答案

一尘不染

我有一天在SO上看到的答案(由@ 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; }

编辑 :当您使用Eclipse时,另一个新的优点-您可以在现场创建观察点,但是如果您有setter,则只需要一个断点,并且…
断点(例如,在setter方法中)可以是有条件的观察点(在现场)不能
。因此,如果仅在x=10只能使用setter中的断点才能停止调试器的情况下才停止。

2020-09-08