Zaleta metod set i get vs zmienna publiczna [duplikat]

Możliwy duplikat:
Po co używać getterów i setterów?

Czy jest jakaś zaleta w tworzeniu metod dostępu do zmiennych prywatnych w klasie, zamiast upubliczniania zmiennej?

Na przykład, czy drugi przypadek jest lepszy niż pierwszy?

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

}

questionAnswers(4)

yourAnswerToTheQuestion