Ereditarietà (informatica): differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
il sostantivo è in -ing
Riga 47:
=== Ridefinizione ===
{{vedi anche|Overriding}}
Molti linguaggi di programmazione ad oggetti permettono ad una classe o ad un oggetto di modificare il modo in cui è implementata una propria funzionalità ereditata da un'altra classe (di solito un metodo). Questa caratteristica è chiamata "ridefinizione" (in inglese, ''overriding''). LaA ridefinizionefronte causadi unaoverriding, complicazione:lo qualestesso versionemetodo delavrà metodoun ècomportamento "visto"diverso se invocato daglisugli oggetti della classesuperclasse ereditata:o quelloin "originario"quelli -della sottoclasse (per lo meno nel caso dei linguaggi che faadottano pureil parte[[binding automaticamentedinamico]]). dellaAd stessaesempio, data una classe -<tt>Quadrilatero</tt> oppureche quellodefinisce ridefinito?alcuni Lacomportamenti rispostagenerali variaper atutte secondale delfigure contestogeometriche econ dei4 linguaggilati, inla particolaresottoclasse in<tt>Rettangolo</tt> relazionepotrebbe alridefinire (ovvero "fare tipooverriding di") bindingquei adottatometodi di <tt>Quadrilatero</tt> che possono essere reimplementati in maniera più specifica tenendo conto delle specificità dei rettangoli (staticoper oesempio, dinamicoil calcolo dell'area potrebbe essere riscritto nella casse <tt>Rettangolo</tt> in modo più semplice ed efficiente semplicemente come prodotto dei lati).
 
La classe derivata può ridefinire parte del comportamento della ''superclasse'', oppure aggiungere dei metodi propri. Nel primo caso si ha il cosiddetto ''[[overriding]]''. Ad esempio, una classe <tt>Quadrilatero</tt> può definire alcuni comportamenti generali per tutte le figure geometriche con 4 lati; se c'è bisogno di definire caratteristiche più specifiche si crea una nuova classe che estende questa, chiamata ad esempio <tt>Quadrato</tt>, e in essa si possono ridefinire (tramite [[overriding]]) quei comportamenti che sono definiti dall'interfaccia di <tt>Quadrilatero</tt>, ma hanno dei dettagli di implementazione specifici dei quadrati (ovvero legati alla proprietà specifica dei quadrati di avere 4 lati e 4 angoli uguali). L'overriding dei metodi di una classe si applica solo agli oggetti della classe derivata, nel senso che le istanze della classe base non ne risentono.
 
=== Estensione ===