Да и нет.Суть инкапсуляции заключается в том, что она не позволяет другим классам знать, что делает ваш класс за кулисами.Если вы храните ваш name
в String
(как вы это сделали здесь), читаете / пишете его из файла или делаете что-то другое, смысл инкапсуляции в том, что для пользователя вашего класса это не так.важно, потому что все они видят String getName( )
и void setName (String name)
.
Поскольку изменение данных полностью находится под контролем вашего класса, это не нарушает инкапсуляцию.Если бы вы сохранили name
в файл, то вы могли бы сделать это в getAllInfo
без какого-либо другого мудрого пользователя этого класса.Поскольку наблюдаемое поведение вне класса по-прежнему скрывает то, что делают внутренние компоненты класса, оно все еще инкапсулировано.
Тем не менее, это очень нестандартный подход.Как я описываю в первом абзаце, использование методов доступа (геттеров и сеттеров) является более идиоматическим подходом, и его легче понять другим, кто использует ваш код.Вы можете делать то, что делаете, это не нарушает инкапсуляцию, но это не то, что я бы назвал элегантным или типичным.