Come è noto, l’ereditarietà consente ad una classe figlia di ereditare le proprietà ed i metodi delle sue classi antenate (purché non siano definiti con l’access specifier “private”). La possibilità di riprogrammare i metodi ereditati nella classe figlia, sovrascrivendone dunque il comportamento, viene definita overriding. Vediamo un esempio:
public class Impiegato
{
proteced String nome;
protected double stipendio;
protected Date dataNascita;
public String getDettagli()
{
return “Nome: ” + nome + “n” + “Stipendio: ” + stipendio;
}
}
public class Dirigente extends Impiegato
{
proteced String dipartimento;
public String getDettagli()
{
return “Nome: ” + nome + “n” + “Stipendio: ” + stipendio +
“n” + “Dirigente del Dipartimento: ” + dipartimento;
}
}
Nel caso in cui venga istanziato un oggetto di classe Dirigente ed invocato il metodo getDettagli(), verrà automaticamente richiamato il metodo ridefinito (overridden) nella stessa classe Dirigente.