Metodo (programmazione): differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Riga 29:
In programmazione a oggetti, le [[classe astratta|classi astratte]] sono classi che rappresentano concetti troppo generali (e quindi astratti) per poter avere istanze dirette. In una classe di questo genere può accadere che, analogamente, un metodo rappresenti un'operazione troppo astratta per poter avere un'implementazione. Un '''metodo astratto''' è un metodo privo di [[implementare|implementazione]] (definito in una classe astratta) che rappresenta un'operazione generale.
 
Un esempio potrebbe essere un ipotetico metodo <code>area()</code> nella classe <code>Poligono</code>. 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 nell'nelle implementazioni di specifiche sottoclassi di <code>Poligono</code>, come <code>Rettangolo</code>. Dichiarando il metodo <code>area</code> nella classe <code>Poligono</code> come metodo astratto, si indica che tutti i poligoni (tutte le sottoclassi di <code>Poligono</code>) 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]].<ref>Più propriamente, una sottoclasse ''potrebbe'' non fornire l'implementazione di <code>area</code>, ma in tal caso il metodo rimarrebbe astratto anche nella sottoclasse. Poiché i metodi astratti sono ammessi solo nelle classi astratte, la sottoclasse dovrebbe quindi a sua volta essere astratta. Questo schema può essere effettivamente usato per rappresentare gerarchie di concetti astratti.</ref>
 
=== Metodi di accesso ===