Зачем нужны методы возвращающие значение поля класса?

Например:
class Person{
    private String name;
    private int age;
    public Person(String n, int a){       
        name=n;
        age=a;
    }
    String getName(){return name;}
    int getAge(){return age;}
}

Часто вижу, что для каждого поля задают метод возвращающий значение.
Почему делают именно так? Ведь можно получить это значения прописав objName.atrName
  • Вопрос задан
  • 254 просмотра
Решения вопроса 4
lxsmkv
@lxsmkv
Test automation engineer
Обьявляя приватное поле, вы хотите чтобы оно менялось только кодом этого класса. Т.е. только ваш класс управляет своим состоянием своих параметров.
Представьте кто-то напишет код где будет напрямую использовать значение age. А оно вдруг поменяется. Потому что у вашего человечка случился День Рождения. Внешний код не получит обновления переменной если не запросит его снова. Когда доступ к значению дается через вызов метода, есть гарантия того, что внешний код будет всегда получать актуальное значение переменной. Предоставляя публичные методы доступа к внутренним параметрам, вы даете внешнему миру интерфейс взаимодействия с вашим классом. И таким образом определяете правила.

Вот вам простая аналогия:
Вы не можете получить доступ к данным из ЖЭК, их базы данных для вас закрыты, но по заявке вы получите доступ к той информации, получить которую имеете право. Заявление и справка это интерфейс работы с данными в ЖЭКе для внешних систем, т.е. жильцов.
Ответ написан
Комментировать
sergey-gornostaev
@sergey-gornostaev Куратор тега Java
Седой и строгий
Потому что ООП - это сама суть Java, а инкапсуляция - одна из основ ООП.
Ответ написан
iLLuzor
@iLLuzor
Java, Kotlin, Android Developer
Почитайте про геттеры\сеттеры. Их самих в языке нет, поэтому приходится делать через методы.
Почему делают именно так?
Так повелось с давних времён и сейчас это стандарт.
Ответ написан
Комментировать
@D3lphi
Прочитайте про то, что такое сокрытие.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы