Che cos'è la classe astratta in Java?

  • Le classi astratte sono come qualsiasi altra classe normale in Java. La principale differenza tra la classe astratta e la classe normale è quella di creare la classe astratta di cui abbiamo bisogno per usare la parola chiave "ABSTARCT". È una separazione dell'implementazione di classe.
  • Hanno usato per definire le caratteristiche molto comuni delle sue sottoclassi. Tale tipo di classe è stata definita Classe astratta.
  • Soprattutto non possiamo creare un oggetto di una classe astratta.
  • Le classi astratte possono contenere metodi astratti e non astratti. Non possono contenere un corpo del metodo astratto, che può essere fornito solo dalla sottoclasse. Se la sottoclasse non fornisce l'implementazione del metodo astratto, allora dobbiamo renderlo ABSTRACT esplicitamente.
  • In altre parole, se una classe contiene un metodo astratto, deve definirsi ABSTARCT.
  • Usando le classi astratte possiamo raggruppare diverse classi java, inoltre ottimizza il codice e rende il codice più leggibile e riduce la ridondanza. Fornisce inoltre un modello per le classi future.

Sintassi della classe astratta in Java

Come funziona la classe astratta in Java?

  • Una classe astratta ha un metodo astratto e un metodo non astratto, cioè un metodo astratto senza corpo e possono avere anche metodi con implementazione.
  • Una classe astratta viene utilizzata per fornire la funzionalità più comune specifica per le diverse classi. Le sottoclassi possono fornire una diversa implementazione di tali metodi astratti in base alle loro esigenze o necessità.
  • Non possiamo creare un oggetto di una classe astratta usando l'operatore 'nuovo', ma possiamo ancora definire il suo costruttore che può essere invocato solo nel costruttore della sua sottoclasse. Il costruttore della sottoclasse può accedere a un costruttore della superclasse per inizializzare la sua variabile che potrebbe essere utilizzata nella sottoclasse per ulteriori requisiti.

Esempi di classe astratta in Java

Human.java

package com.cont.article;
public abstract class Human
(
public abstract void whatTheylike();
public void doTheysleep()
(
System. out .println("Yes every human require sleep.");
)
)

Human1.java

package com.cont.article;
public class Human1 extends Human
(
@Override
public void whatTheylike()
(
System. out .println("we like to have icecream.");
)
)

Human2.java

package com.cont.article;
public class Human2 extends Human
(
@Override
public void whatTheylike()
(
System. out .println("we like to have coffee.");
)
)

TestHuman.java

package com.cont.article;
public class TestHuman
(
public static void main(String() args)
(
Human human1 = new Human1();
human1.whatTheylike();
Human human2 = new Human2();
human2.whatTheylike();
human1.doTheysleep();
human2.doTheysleep();
)
)

Produzione:

Nell'esempio sopra, abbiamo l'UMANO come una classe astratta che definisce i bisogni, le simpatie e le antipatie comuni di un essere umano. Esistono diversi tipi di umani con simpatie e antipatie diverse. Quindi ogni essere umano può fornire un'implementazione specifica di ciò che gli piace. Questo sarà specifico solo per loro.

Il vantaggio principale della classe astratta è che abbiamo un'implementazione specifica dei metodi secondo un requisito che porta anche a ridurre la ridondanza, aumenta la leggibilità del codice, nasconde l'implementazione dei metodi e quindi fornisce un'astrazione parziale.

Possiamo avere un altro esempio per capire quando dovremmo usare le classi astratte.

  • Dovremmo usare la classe astratta quando vogliamo condividere funzionalità comuni tra classi diverse con implementazione specifica.
  • Nelle classi astratte i campi non devono essere statici e definitivi, possiamo anche avere metodi concreti definiti come privati, pubblici e protetti.

Diciamo che abbiamo una classe di animali. Ci sono varietà di animali che abbiamo sulla terra e sono tutte diverse l'una dall'altra in un certo senso. Conterrà tutte le caratteristiche comuni di tutti.

Ora, questa classe di animali non può avere metodi specifici per ogni animale. Quindi, con il concetto di classe astratta, possiamo implementare questa funzionalità senza codice ridondante.

Tutti gli animali hanno un diverso tipo di suono, abitudini, ecc. Ad esempio Cane, gatto, elefante e merenda hanno tutti un suono diverso. Quindi, per questo, possiamo avere un metodo generico in classe genitore attraverso il quale tutte le altre sottoclassi o classi figlie possono fornire la propria implementazione specifica.

Nella classe genitore, ovvero gli animali, abbiamo un metodo astratto generico chiamato Sound (). Pertanto, ogni classe figlio deve sovrascrivere questo metodo e fornire la propria implementazione specifica.

Classe e interfaccia astratte?

  • La classe astratta e l'interfaccia sono entrambe utilizzate per raggiungere l'astrazione in Java. Una classe astratta fornisce un'astrazione parziale mentre l'interfaccia fornisce il 100% o l'astrazione completa.
  • Per impostazione predefinita, le variabili in un'interfaccia sono definitive. Ma la classe astratta contiene anche una variabile non finale. Allo stesso modo la classe astratta può avere anche una variabile statica, non statica. Ma Interface conterrà solo una variabile finale e statica.
  • Le variabili membro di una classe astratta possono essere private, pubbliche, protette, ma per impostazione predefinita sono pubbliche nel caso dell'interfaccia.
  • Una classe astratta può estendere un'altra classe Java e implementare più interfacce, ma un'interfaccia può estendere solo un'altra interfaccia. Una classe astratta può fornire un'implementazione di un'interfaccia ma un'interfaccia non può farlo.
  • Utilizziamo strumenti ed estendiamo parole chiave per implementare ed estendere rispettivamente interfaccia e classi.
  • Attraverso il metodo, possiamo modificare o accedere alle variabili non statiche e non finali di una classe astratta.

Conclusione

  • Classe astratta utilizzata per fornire astrazione parziale. Non è possibile creare un'istanza di una classe astratta utilizzando la parola chiave NEW.
  • Un metodo astratto non ha un corpo e termina sempre con un punto e virgola (;).
  • La classe astratta contiene metodi astratti e non astratti.
  • Sottoclasse di una superclasse astratta, è necessario fornire un'implementazione di tutto il metodo astratto se non prevede quindi deve dichiararsi come classe astratta.
  • Una sottoclasse può essere astratta anche se la superclasse è concreta.
  • Una classe non astratta non può contenere metodi astratti. Inoltre, il metodo astratto non è statico.
  • Quindi possiamo dire che le classi astratte contengono anche metodi astratti e concreti, quindi non possono fornire l'astrazione al 100%. È un processo per nascondere la complessa logica all'utente finale e mostra loro solo i servizi. Una sottoclasse può essere astratta anche se la sua superclasse è concreta e può essere utilizzata anche come tipo di dati.
  • Una classe astratta può avere campi statici e metodi statici. È possibile utilizzare questi membri statici con un riferimento di classe.

Articoli consigliati

Questa è una guida alla classe astratta in Java. Qui discutiamo la sintassi e gli esempi di classe astratta in Java insieme a classe astratta e interfaccia. Puoi anche consultare i seguenti articoli per saperne di più -

  1. Interfaccia Java vs classe astratta
  2. BoxLayout in Java
  3. Che cos'è Java SE?
  4. Che cos'è l'ereditarietà Java?
  5. Come funziona la classe astratta in PHP?
  6. Classe astratta in C ++
  7. Guida al metodo statico in PHP
  8. Panoramica completa del metodo statico JavaScript

Categoria: