АБСТРАКЦИИ В JAVA

Абстракция в Java — это методология сокрытия реализации внутренних деталей и показа функциональности пользователям.

Пример: Мобильный телефон.

ABSTRACTION IN 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 следующим образом

12345678910111213 package abstractClass; public class AbstractChildOneClass{ public static void main (String [] args){AbstractSuperClass obj = new AbstractSuperClass();obj.myMethod();} }

При компиляции вышеуказанного класса выходные данные будут такими: следует

Вывод:

1234 Исключение в потоке “main” java.lang.Error: нерешенная проблема компиляции: невозможно создать экземпляр типа AbstractSuperClass в abstractClass.AbstractChildOneClass.main(AbstractChildOneClass.java:7)

Теперь давайте наследуем абстрактный класс и посмотрим.

Наследование абстрактного класса

12345678910111213141516 пакет абстрактный класс; //Здесь класс является abstractpublic абстрактным классом AbstractSuperClass {//элементы данных не могут быть abstractpublic int a = 10;//myMethod() является абстрактным методомabstract void myMethod();//myMethod(int x) не является абстрактным методом. Это конкретный methodvoid myMethod(int x){System.out.println(“Я в суперклассе и я не абстрактный метод. Я конкретный метод”);} }

1234567891011121314151617181920212223242526 пакет абстрактный класс; //Наследование класса AbstractSuperClasspublic class AbstractChildOneClass extends AbstractSuperClass{ public static void main (String [] args){                  //Здесь мы не можем создать экземпляр класса AbstractSuperClass, но можем создать экземпляр класса AbstractChildClass                //Используя экземпляр AbstractChildClass, мы можем получить доступ к методам и элементы данных класса AbstractSuperClass classAbstractSuperClass obj = new AbstractChildOneClass(); System.out.println(“Я член данных класса Super, и мое значение равно ” + obj.a);obj.myMethod();obj.myMethod(20) ;} @Overridevoid myMethod() { System.out.println(“Я в дочернем классе”);} }

Вывод:

123 Я являюсь членом данных из суперкласса, и мое значение равно 10Я нахожусь в дочернем классеЯ нахожусь в суперклассе, и я не являюсь абстрактным методом. Я конкретный метод

Мы используем абстракцию, когда знаем, что наш класс должен иметь некоторые методы, но мы не уверены, как именно эти методы должны работать. Предположим, я создаю класс Vehicle, который должен иметь метод start(). Будет какой-то другой подкласс этого класса Vehicle, такой как Car, Bike, и эти два подкласса используют метод start(). Но реализация метода start() в Car отличается от Bike. Поэтому в данном случае я не реализую метод start() в классе Vehicle, а реализую его в подклассах.

В приведенной выше программе мы видели абстрактный метод в абстрактном классе. Абстрактные классы не дают 100% абстракции, поскольку абстрактный класс допускает конкретные методы. С абстрактным классом мы можем достичь частичной абстракции, тогда как мы можем достичь 100% абстракции с интерфейсом, который мы видим в разделе «Интерфейс».

TAG: qa

От QA genius

Adblock
detector