In general: if you hide your internal implementation behind gettersthen you can change the implementation without breaking any other code that uses your class. Ways in which you might change include:
Changing the private data type (eg Date to Calendar)
Waiting until someone requests a value before creating it (eg if it needs a database access).
Implementing security rules.
Setters also allow you to change the data types, but also ensure that you always know when the value changes - maybe this has effects on other things that will never get processed if the user can just change the value without you knowing. Eg
You need to update a dataabse when the value changes
You need to apply access control rules to the update
You need to recompute the sales tax if the price changes
You need to change the shipping rates if someones address is changed... etc etc