Преимущество методов set и get по сравнению с публичной переменной [duplicate]

Possible Duplicate:
Why use getters and setters?

Есть ли какое-то преимущество в создании методов для доступа к закрытым переменным в вашем классе вместо того, чтобы делать переменные общедоступными?

Например, второй случай лучше, чем первый?

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

}

Ответы на вопрос(4)

Ваш ответ на вопрос