giovedì 4 aprile 2013

il modificatore abstract

Il modificatore abstract

Il modificatore abstract può essere applicato a classi e metodi.


Metodi astratti
Un metodo astratto non implementa un proprio blocco di codice e quindi il suo comportamento perciò termina con un punto e virgola.

public abstract void dipingiQuadro();

Questo metodo non può essere chiamato ma può essere riscritto.

Un metodo astratto può essere  definito solo dentro una classe astratta.
Vediamo questo codice:

abstract class MiaClasse {
       abstract int metodo1();
       abstract int metodo2(){
             return 5;
       };
       int metodo3();
       int metodo4(){
             return 5;
       }
}

Il metodo1()  compila , è un metodo astratto e non ha corpo(body).
Il metodo2()  non compila , è un metodo astratto e non può avere un corpo.
Il metodo3()  non compila , è un metodo concreto e non ha corpo.
Il metodo4()  compila , è un metodo concreto con un corpo. Una classe astratta può avere metodi concreti.

Se al posto di abstract class MiaClasse scrivessimo class MiaClasse avremmo un errore di compilazione per la presenza dentro la classe concreta di metodi astratti.

Per i metodi gli unici modificatori permessi insieme ad abstract sono public e protected

       public abstract int metodo1();
       protected abstract int metodo2();

 
Classi astratte

Una classe dichiarata astratta non può essere istanziata.

Il senso è quello di obbligare l’estensione di una classe astratta da parte di una classe concreta. Per questa ragione non si possono usare i modificatori final e asbtract insieme.

 

Nessun commento:

Posta un commento