Возможный дубликат:
Абстракция VS Скрытие информации VS Инкапсуляция
Я знаю, что этот вопрос, возможно, задавался тысячи раз на этом форуме, даже в сети также много определений об этих понятиях, но все они звучат одинаково и используют одни и те же технические слова. Например, следующие определения
Инкапсуляция - это процесс связывания или упаковки данных и кодов, работающих с данными, в единый объект. Это обеспечивает безопасность данных от внешнего интерфейса и неправильное использование. Один из способов думать об инкапсуляции - это защитная оболочка, которая предотвращает произвольный доступ к коду и данным из другого кода, определенного вне оболочки.
Что я понял из приведенного выше определения, так это то, что создаем переменные, помечаем их как частные и генерируем getter-setter для этих переменных и используем объект для доступа к этим getter и setter. Таким образом, данные скрыты внутри объекта и доступны только через объект. Надеюсь, я прав.
Абстракция - это процесс в Java, который используется, чтобы скрыть определенные детали и показать только основные свойства объекта. Другими словами, это касается внешнего вида объекта (интерфейса).
Это та часть, которая всегда смущает меня. Всякий раз, когда я думаю об абстракции, мне приходит в голову класс Abstract (может быть потому, что оба имеют ключевое слово Abstract). Выше определение говорит, что абстракция означает скрытие данных и только показ необходимых деталей, но это то, что мы уже делаем в инкапсуляции, верно? тогда какая разница. Также я не понял, что такое внешний вид объекта, в нем речь идет о внешнем виде объекта.
Может кто-нибудь, пожалуйста, пролить больше света на этот пример из реальной жизни или, если возможно, с помощью некоторых программных примеров.