Avatar ·

Por que usar getters e setters (acessores) em Java se você pode simplesmente tornar os campos públicos?

Olá a todos! Comecei a estudar Java e POO, e surgiu uma dúvida. Frequentemente vejo que no código, para cada campo da classe, escrevem getters e setters. Por exemplo: ```java public class Person { private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } ``` Mas poderia ser mais simples: ```java public class Person { public String name; public int age; } ``` E acessar diretamente: `person.name = "Vasya"`. Isso é mais curto e claro! Por que perder tempo escrevendo esses métodos? Entendo que tem a ver com encapsulamento, mas na prática não vejo diferença. Expliquem, por favor, para que realmente servem, e não apenas "porque é assim que se faz". Qual o sentido prático disso? Especialmente, como isso ajuda na hora de modificar o código no futuro?