Абстракция в Java — это методология сокрытия реализации внутренних деталей и показа функциональности пользователям.
Пример: Мобильный телефон.
Неспециалист, использующий мобильный phone не знает, как это работает внутри, но он может звонить по телефону.
Абстракция в Java достигается с помощью абстрактных классов и интерфейсов. Давайте подробно рассмотрим, что такое абстрактный класс и интерфейс.
Абстрактный класс:
Мы можем легко определить, является ли класс абстрактным классом или нет. Класс, который содержит ключевое слово abstract в своем объявлении, является абстрактным классом.
Синтаксис:
1 | абстрактный класс <имя-класса>{} |
Важно помнить:
1. Абстрактные классы могут включать или не включать абстрактные методы
2. Если класс объявлен абстрактным, он не может быть создан.
3. Если у класса есть абстрактный метод, мы должны объявить класс как абстрактный класс
4. Когда абстрактный класс является подклассом, подкласс обычно предоставляет реализации для всех абстрактных методов в его родительском классе. Однако если это не так, то подкласс также должен быть объявлен абстрактным.
Абстрактный метод.
Абстрактный метод – это метод, объявленный без реализации (без фигурные скобки и точка с запятой), например:
1 | abstract void myMethod(); |
Чтобы использовать абстрактный метод, вам нужно переопределить этот метод в sub class.
Давайте рассмотрим пример:
Чтобы создать абстрактный класс, просто используйте ключевое слово abstract перед ключевым словом class в объявлении класса.
123456789 | package abstractClass; //Здесь class — abstractpublic абстрактный класс AbstractSuperClass {//myMethod() — абстрактный methodabstract void myMethod();
Давайте попробуем создать экземпляр класса AbstractSuperClass следующим образом
При компиляции вышеуказанного класса выходные данные будут такими: следует Вывод:
Теперь давайте наследуем абстрактный класс и посмотрим. Наследование абстрактного класса
Вывод:
Мы используем абстракцию, когда знаем, что наш класс должен иметь некоторые методы, но мы не уверены, как именно эти методы должны работать. Предположим, я создаю класс Vehicle, который должен иметь метод start(). Будет какой-то другой подкласс этого класса Vehicle, такой как Car, Bike, и эти два подкласса используют метод start(). Но реализация метода start() в Car отличается от Bike. Поэтому в данном случае я не реализую метод start() в классе Vehicle, а реализую его в подклассах. В приведенной выше программе мы видели абстрактный метод в абстрактном классе. Абстрактные классы не дают 100% абстракции, поскольку абстрактный класс допускает конкретные методы. С абстрактным классом мы можем достичь частичной абстракции, тогда как мы можем достичь 100% абстракции с интерфейсом, который мы видим в разделе «Интерфейс». TAG: qa |