其实这不是只存在于java中的问题,所有oop语言都有这个疑惑,对初学者来说容易造成混乱。我用我熟知的java代码来举个例子
class Something {
    private int someNumber;
    public void testMethod() {
        // do this
        setSomeNumber(getSomeNumber() + 1);
        // or do this
        someNumber = someNumber + 1;
    }
    public void setSomeNumber(int someNumber) {
        this.someNumber = someNumber;
    }
    public int getSomeNumber() {
        return someNumber;
    }
}在上面的testMethod代码中看到了我们常用的两种写法,对我这种菜鸟来说,影响你使用某种写法的原因可能只是你偶尔的心血来潮。
如果在外部使用这个对象,毫无疑问我们会使用setter和getter方法,但是在它自身内部呢?