Metodo astratto

(Reindirizzamento da Metodi astratti)

In informatica, un metodo astratto è un metodo privo di implementazione[1] (definito in una classe astratta), seguito sempre da un punto e virgola, che rappresenta un'operazione generale. Spesso, i metodi astratti hanno una o più implementazioni fornite separatamente, per esempio, sotto forma di sottoclassi concrete, che possono includere metodi astratti o proprietà astratte che sono condivise dai suoi sottotipi. Un metodo non astratto invece, è chiamato concreto (o classe concreta). I metodi astratti possono essere chiamati anche esistenziali.

Una classe che definisce un metodo astratto o che eredita un metodo astratto senza sovrascriverlo deve essere dichiarata abstract.

Esempi (Java) modifica

   public abstract class Automobile {
      public abstract String marca();
      public abstract String carburante();
         // Metodi astratti di tipo String
      public abstract int cilindrata();
         // metodo astratto di tipo int
      public abstract double prezzo();
         // metodo astratto di tipo double
   }

Un altro esempio potrebbe essere un ipotetico metodo area() nella classe Poligono: sebbene si possa dire che di ogni poligono si può calcolare l'area, potrebbe non essere semplice scrivere le istruzioni che svolgono effettivamente tale calcolo in termini così generali. Tale calcolo si può invece agevolmente introdurre nelle implementazioni di specifiche sottoclassi di Poligono, come Rettangolo. Dichiarando il metodo area nella classe Poligono come metodo astratto, si indica che tutti i poligoni cioè tutte le sottoclassi di Poligono, devono avere quell'operazione, e allo stesso tempo non la si fornisce (implementata) nel corpo della classe. La conseguenza è che ogni sottoclasse dovrà necessariamente fornire una propria implementazione del metodo attraverso overriding cioè ridefinire in una sottoclasse un metodo ereditato da una superclasse.

Caratteristiche dei metodi astratti modifica

  • Un metodo astratto non ha implementazione (sostanzialmente viene definito solo il suo prototipo, perché è compito della sottoclasse implementare correttamente il metodo);
  • Se un metodo astratto viene esteso, verrà ereditato;
  • Solo le classi astratte e le interfacce possono contenere metodi astratti.

Note modifica

  1. ^ Michael T. Goodrich, Roberto Tamassia, Strutture dati e algoritmi in Java, Bologna, Zanichelli Editore, 2007, p. 13, ISBN 978-88-08-07037-1.

Voci correlate modifica

  1. Classe astratta
  2. Costruttore (informatica)
  3. Oggetto (informatica)

Collegamenti esterni modifica

  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica