The larger your projects become, the greater the number of interactions that can occur between different objects. You want to control and limit these interactions to the bare minimum else difficult to discover side effects can and will creep into your code.
For example, you can have a class to calculate taxes of given amount of money. You wouldn't want anyone to accidently change 0.05
tax amount to something like 3.00
and bill the customer triple amount of item's price, or change the type of tax variable to something like NULL
and cause exceptions/fatal errors during calculation.
With a settler, you can force people to obey your rules. You can validate everything before assigning values to private variables.
Usually, a good practice approach is: make everything private - then make public what needs to be public - and add required gettlers and settlers for necessary privates.