If any code can set balance = -500 directly, nothing protects the object from bad data. Encapsulation hides fields behind private and lets other code change them only through methods that can check the input. Use it for any field with rules, like a balance that must never be negative. Getters and setters that check nothing add little, so put the real validation inside them.