Che cos'è una classe astratta e un metodo astratto in Java? Quando dovrei usarlo? Tutorial allegato

Pubblicato: 2019-09-12
java-abstract-classe-tutorial-by-crunchify

Un paio di giorni fa ho scritto un articolo su Java Fundamental di base su Cos'è un'interfaccia in Java e come viene utilizzata? Questo tutorial è anche correlato al fondamentale Java di base “ Abstract Class and Abstract Method ”.

Che cos'è una classe astratta?

Iniziamo a capire prima la classe Abstract e poi esamineremo Esempio.

  • Una classe astratta è una classe dichiarata abstract
  • Le classi astratte non possono essere istanziate
  • Le classi astratte possono essere sottoclassi
  • Può includere o meno metodi astratti
  • Quando una classe astratta è subclassed , la sottoclasse di solito fornisce implementazioni per tutti i metodi astratti nella sua classe padre
  • Se la sottoclasse non fornisce implementazioni, anche la sottoclasse deve essere dichiarata abstract .

Questa è una basic Java Interview Question . Probabilmente la 1 st Java Interview Question che ricevi durante l'intervista.

Posso definire una classe astratta senza aggiungere un metodo astratto?

Certo che si. Dichiarare una classe astratta significa solo che non si consente che venga istanziata da sola. Non puoi avere un metodo astratto in una classe non astratta.

Che cos'è un metodo astratto?

  • Un abstract method è un metodo dichiarato senza un'implementazione.
  • Ha solo una firma del metodo.

Cominciamo con un esempio. Descrizione del problema:

  1. Crea la classe CrunchifyExam.java , che ha un metodo astratto chiamato checkResult()
  2. Crea classe Crunchify1stSchoolExamResult.java , che estende la classe Abstract CrunchifyExam.java
  3. Crea la classe Crunchify2ndSchoolExamResult.java , che estende la classe astratta CrunchifyExam.java
  4. Ora entrambe le classi precedenti devono fornire l'implementazione per il metodo checkResult()
  5. Entrambe le scuole possono avere la propria procedure o number of checks per scoprire se l'utente è PASSED or FAILED , sono libere di avere la propria implementazione di checkResult()

Dopo aver esteso la classe CrunchifyExam in Crunchify1stSchoolExamResult.java , Eclipse ti chiederà di implementare i metodi astratti menzionati in CrunchifyExam.java

Implementa il metodo astratto - Crunchify Tutorial

Crunchify1 st SchoolExamResult.java

Crunchify2 nd SchoolExamResult.java

Risultato console Eclipse:

Basta fare clic con il pulsante destro del mouse su Crunchify2ndSchoolExamResult.java ed eseguire come Java Application per vedere il risultato di seguito.

Ora potresti avere una domanda

Perché non posso usare l'interfaccia qui invece di avere Abstract Method e Class astratti e avere CrunchifyExam come interfaccia?

Bene, Sure you could , ma dovresti anche implementare i getExamTime (), setExamTime (), getExamTime (), setExamTime ().

Utilizzando classi astratte, puoi ereditare l'implementazione di altri metodi (non astratti). Non puoi farlo con le interfacce: un'interfaccia cannot provide alcuna implementazione di metodo.

È possibile creare una classe astratta e finale in Java?

  • L'astratto e il finale sono il concetto che si escludono a vicenda.
  • Quindi la risposta è NO, non possiamo rendere una classe astratta o un metodo finale in Java.
  • La classe finale è una classe completa e non può essere ulteriormente estesa.
  • La classe astratta è chiamata classe incompleta e può essere estesa solo da un'altra classe concreta e devi implementare tutti i metodi astratti.
  • Inoltre, non c'è modo e non è possibile avere un metodo astratto in una classe finale.

È possibile ereditare da più classi astratte in Java?

  • Java non supporta l'ereditarietà multipla.
  • In Java possiamo estendere solo una singola classe.
  • In Java possiamo implementare Interfacce da molte fonti.