Avatar ·

Por que precisamos de getters e setters se podemos simplesmente tornar os campos públicos?

Olá a todos! Comecei a estudar Java e POO recentemente, e tenho uma pergunta que provavelmente é boba. Em todos os livros e cursos, dizem: "Sempre torne os campos private e o acesso a eles através de getters e setters". Mas não entendo por que complicar tanto? Aqui está minha classe `Person`: ```java public class Person { public String name; public int age; } ``` E posso escrever tranquilamente: ```java Person person = new Person(); person.name = "Vasya"; person.age = 25; System.out.println(person.name); ``` Funciona! Por que eu deveria escrever 20 linhas extras de código: ```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; } } ``` Só para depois fazer a mesma coisa? `person.setName("Vasya")` — é