Classi Astratte

Indice Tutorial

Una classe astratta è simile a una normale classe: può avere attributi e metodi, ma è caratterizzata dalla parola chiave abstract. Non può essere istanziata e la sua implementazione è demandata alle sottoclassi;

Esempio:

public abstract class Animale {
    //campi
    private boolean vivo=true;
    //metodi
    public boolean isVivo() { return this.vivo; }
   
}

La classe “animali” è una categoria concettuale, non esiste “il generico animale”, ma solo animali specifici;

Può avere, inoltre, metodi definiti ma non implementati (marcati anch’essi con la parola chiave abstract).

public abstract void metodo();

Una classe astratta, quindi dichiarata con “abstract class”, può anche non avere nessun metodo astratto.

Esempio

public abstract class MyClass {

	public void hello() {
		
	}
}

Viceversa, se una casse ha un metodo astratto deve essere per forza dichiarata abstract.

Esempio

public  class MyClass {

	public abstract void hello();// ERRORE DI COMPILAZIONE: la classe deve essere dichiarata astratta
}

Una classe astratta può avere dei costruttori, anche senza poter essere istanziata: il costruttore verrà utilizzato dalle sottoclassi.

Esempio

public  abstract class MyClass {
	
	public MyClass(int i) {
		
	}
	
}

Una classe può estendere una classe astratta, a patto che fornisca tutte le implementazioni necessarie; qualora ciò non avvenga, resta astratta anche se i suoi metodi non sono abstract.

Esempio:

public abstract class Veicolo_classe_astratta
{
    public abstract void accendi();
}

public class Auto_4x4 extends Veicolo_classe_astratta  // classe concreta, essendo fornita un'implementazione per il metodo accen-di()
{
    public void accendi()
    {
        System.out.println("veicolo acceso");	
    }
}

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *