title: Metodo astratto
text: # Metodo astratto
  
  In informatica, un metodo astratto è un metodo privo di implementazione (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)
  
  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
  
  * 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.
  