Pascal/Override, metodi virtuali e classi astratte: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nuova pagina: {{Pascal}} Verranno ora introdotti alcuni concetti avanzati del paradigma OOP. ==Override== Nella programmazione orientata agli oggetti è possibile ridefinire un metodo che è stato ...
 
Nessun oggetto della modifica
Riga 29:
END.
</source>
 
Molte volte però si ha l'esigenza di creare un'estensione del metodo originale, in modo che possa fare altro e di più. Il Turbo Pascal ammette la parola riservata <code>inherited</code> per includere nel metodo la routine compresa nel metodo originale.
 
 
Riferendoci all'esempio di cui sopra, possiamo modificarlo per mostrare un possibile utilizzo della parola chiave '''inherited'''.
 
<source lang=pascal>
TYPE TA = Object
Procedure StampaMsg;
End;
TB = Object (A)
End;
Procedure A.StampaMsg;
BEGIN
writeln("Messaggio del metodo originale.");
END;
Procedure B.StampaMsg; {Override}
BEGIN
inherited StampaMsg; {qui il compilatore include la routine del metodo dell'oggetto padre}
writeln("Questo invece è il messaggio del metodo ridefinito.");
END;
VAR A:TA;
B:TB;
BEGIN
B.StampaMsg; {metodo ridefinito}
readln;
END.
</source>
 
L'effetto del programma sopra sarà di stampare entrambi messaggi, ovvero quello della funzione originale e della funzione ridefinita, grazie all'istruzione <source lang=pascal>inherited StampaMsg</source>.
 
==I metodi virtuali e le classi astratte==
...
 
[[Categoria:Pascal]]