Что такое абстрактный класс и абстрактный метод в Java? Когда я должен использовать его? Учебник прилагается

Опубликовано: 2019-09-12
java-abstract-class-tutorial-by-crunchify

Пару дней назад я написал статью об основных принципах Java о том, что такое интерфейс в Java и как он используется? Этот учебник также связан с базовыми основами Java « Abstract Class and Abstract Method ».

Что такое абстрактный класс?

Давайте сначала начнем понимать абстрактный класс, а затем мы рассмотрим пример.

  • Абстрактный класс — это класс, объявленный abstract
  • Абстрактные классы не могут быть созданы
  • Абстрактные классы могут быть подклассами
  • Он может включать или не включать абстрактные методы
  • Когда абстрактный класс является subclassed , подкласс обычно предоставляет реализации для всех абстрактных методов в его родительском классе.
  • Если подкласс не предоставляет реализации, то подкласс также должен быть объявлен abstract .

Это очень basic Java Interview Question . Вероятно, это 1 st Java Interview Question , который вы получаете во время собеседования.

Могу ли я определить абстрактный класс без добавления абстрактного метода?

Да конечно. Объявление абстрактного класса означает только то, что вы не позволяете создавать его экземпляры сами по себе. У вас не может быть абстрактного метода в неабстрактном классе.

Что такое абстрактный метод?

  • abstract method — это метод, объявленный без реализации.
  • У него просто есть сигнатура метода.

Начнем с примера. Описание проблемы:

  1. Создайте класс CrunchifyExam.java с одним абстрактным методом checkResult()
  2. Создайте класс Crunchify1stSchoolExamResult.java , который расширяет абстрактный класс CrunchifyExam.java
  3. Создайте класс Crunchify2ndSchoolExamResult.java , который расширяет абстрактный класс CrunchifyExam.java
  4. Теперь оба вышеуказанных класса должны обеспечить реализацию метода checkResult().
  5. Обе школы могут иметь свою собственную procedure или number of checks , чтобы узнать, прошел ли пользователь PASSED or FAILED , они могут иметь свою собственную реализацию checkResult()

Как только вы расширите класс CrunchifyExam в Crunchify1stSchoolExamResult.java , Eclipse предложит вам реализовать абстрактные методы, упомянутые в CrunchifyExam.java

Реализовать абстрактный метод - Crunchify Tutorial

Crunchify1 SchoolExamResult.java

Crunchify2- й SchoolExamResult.java

Результат консоли Eclipse:

Просто щелкните правой кнопкой мыши Crunchify2ndSchoolExamResult.java и запустите как Java Application , чтобы увидеть результат ниже.

Теперь у вас может возникнуть вопрос

Почему я не могу использовать интерфейс здесь, а не использовать Abstract Method и Class и использовать CrunchifyExam в качестве интерфейса?

Что ж Sure you could но вам также потребуется реализовать getExamTime (), setExamTime (), getExamTime (), setExamTime ().

Используя абстрактные классы, вы можете наследовать реализацию других (не абстрактных) методов. Вы не можете сделать это с интерфейсами — интерфейс cannot provide никаких реализаций методов.

Можно ли создать абстрактный и окончательный класс в Java?

  • Абстрактное и конечное являются взаимоисключающими понятиями.
  • Итак, ответ НЕТ, мы не можем сделать абстрактный класс или метод окончательным в Java.
  • Заключительный класс является полным классом и не может быть расширен.
  • Абстрактный класс называется неполным классом и может быть расширен только другим конкретным классом, и вы должны реализовать все абстрактные методы.
  • Кроме того, нет никакого способа и невозможно иметь абстрактный метод в финальном классе.

Можно ли наследовать от нескольких абстрактных классов в Java?

  • Java не поддерживает множественное наследование.
  • В Java мы можем расширить только один класс.
  • В Java мы можем реализовать интерфейсы из многих источников.