Co to jest klasa abstrakcyjna i metoda abstrakcyjna w Javie? Kiedy powinienem go używać? Załączono samouczek

Opublikowany: 2019-09-12
java-abstract-class-tutorial-by-crunchify

Kilka dni temu napisałem artykuł na temat podstawowych podstaw Java na temat Co to jest interfejs w Javie i jak go używać? Ten samouczek jest również powiązany z podstawowymi podstawami Javy „ Abstract Class and Abstract Method ”.

Co to jest klasa abstrakcyjna?

Zacznijmy najpierw rozumieć klasę abstrakcyjną, a następnie omówimy Przykład.

  • Klasa abstrakcyjna to klasa zadeklarowana jako abstract
  • Klasy abstrakcyjne nie mogą być tworzone
  • Klasy abstrakcyjne mogą być podzielone na podklasy
  • Może, ale nie musi zawierać abstrakcyjnych metod
  • Kiedy klasa abstrakcyjna jest subclassed , podklasa zwykle dostarcza implementacje dla wszystkich metod abstrakcyjnych w swojej klasie nadrzędnej
  • Jeśli podklasa nie zapewnia implementacji, podklasa musi być również zadeklarowana jako abstract .

To jest bardzo basic Java Interview Question . Prawdopodobnie pierwsze 1 st Java Interview Question , które otrzymasz podczas rozmowy kwalifikacyjnej.

Czy mogę zdefiniować klasę abstrakcyjną bez dodawania metody abstrakcyjnej?

Oczywiście, że tak. Zadeklarowanie abstraktu klasy oznacza tylko, że nie zezwalasz na jego samodzielne tworzenie. Nie możesz mieć metody abstrakcyjnej w klasie nieabstrakcyjnej.

Co to jest metoda abstrakcyjna?

  • abstract method to metoda zadeklarowana bez implementacji.
  • Ma tylko sygnaturę metody.

Zacznijmy od przykładu. Opis problemu:

  1. Utwórz klasę CrunchifyExam.java , która ma jedną abstrakcyjną metodę o nazwie checkResult()
  2. Utwórz klasę Crunchify1stSchoolExamResult.java , która rozszerza klasę abstrakcyjną CrunchifyExam.java
  3. Utwórz klasę Crunchify2ndSchoolExamResult.java , która rozszerza klasę abstrakcyjną CrunchifyExam.java
  4. Teraz obie powyższe klasy muszą zapewnić implementację metody checkResult()
  5. Obie szkoły mogą mieć własne różne procedure lub number of checks aby dowiedzieć się, czy użytkownik jest PASSED or FAILED , mogą mieć własną implementację checkResult()

Po rozszerzeniu klasy CrunchifyExam w Crunchify1stSchoolExamResult.java – Eclipse poprosi o zaimplementowanie metod Abstract wymienionych w CrunchifyExam.java

Implementuj metodę abstrakcyjną — samouczek Crunchify

Crunchify1st SchoolExamResult.java

Crunchify2 nd SchoolExamResult.java

Wynik konsoli Eclipse:

Wystarczy kliknąć prawym przyciskiem myszy Crunchify2ndSchoolExamResult.java i uruchomić jako Java Application , aby zobaczyć poniższy wynik.

Teraz możesz mieć pytanie

Dlaczego nie mogę użyć tutaj interfejsu zamiast Abstract Method i Class , a CrunchifyExam jako interfejsu?

No cóż – Sure you could – ale trzeba by też zaimplementować metody getExamTime (), setExamTime (), getExamTime (), setExamTime ().

Używając klas abstrakcyjnych, można dziedziczyć implementację innych (nieabstrakcyjnych) metod. Nie możesz tego zrobić z interfejsami — interfejs cannot provide żadnych implementacji metod.

Czy można stworzyć abstrakcyjną i końcową klasę w Javie?

  • Abstrakt i finał to pojęcie wzajemnie się wykluczające.
  • Tak więc odpowiedź brzmi NIE, nie możemy zrobić ostatecznej klasy lub metody w Javie.
  • Zajęcia końcowe to zajęcia pełne i nie można ich dalej przedłużać.
  • Klasa abstrakcyjna nazywana jest klasą niekompletną i może być rozszerzona tylko o inną klasę konkretną i musisz zaimplementować wszystkie metody abstrakcyjne.
  • Poza tym nie ma sposobu i nie jest możliwe, aby w końcowej klasie znajdowała się metoda abstrakcyjna.

Czy możliwe jest dziedziczenie z wielu klas abstrakcyjnych w Javie?

  • Java nie obsługuje wielokrotnego dziedziczenia.
  • W javie możemy rozszerzyć tylko jedną klasę.
  • W Javie możemy zaimplementować interfejsy z wielu źródeł.