Insulating your public interface from change - allowing the public interface to remain constant while the implementation changes without affecting existing consumers.
Hiding the internal representation of the property while exposing a property using an alternative representation.
Encapsulation of behavior associated with getting or setting the property - this allows additional functionality (like validation) to be added more easily later.
Here are the some of the reasons I am aware of: There are actually many good reasons to consider using accessors rather than directly exposing fields of a class - beyond just the argument of encapsulation and making future changes easier.