Quote Originariamente inviata da sandonatese Visualizza il messaggio
Il punto è che i costruttori di Impiegato (superclasse) e Dirigente (sottoclasse) hanno le stesse variabili di istanza
Impiegato e Dirigente sono due classi diverse... a nessuna delle due importa nulla di come si chiamino i "parametri formali" del costruttore dell'altra... tanto quelli sono visibili solo dentro il costruttore e servono solo a referenziare i valori che gli vengono passati. Puoi anche chiamarli con nomi diversi, non cambia nulla (le due classi non vedono i corrispettivi nomi dei parametri formali).

Quindi pensavo di sovrascrivere il costruttore di Impiegato per creare quello di Dirigente.
Cioè? Cosa vuol dire? E, prima ancora domandati: che senso ha? Ciascuna classe ha vita propria... il costruttore di una determinata classe deve essere fatto solo in funzione del funzionamento della classe. Impiegato non sa nulla (e non deve sapere nulla!) dell'esistenza di una classe Dirigente che la estende... un domani potrebbero esserci 100 classi diverse che estendono Impiegato e lei non deve saperne nulla... non ha senso che sappia qualcosa delle classi che la estendono.

I parametri del costruttore "Dirigente" e di "super" non devono avere nomi diversi?
Grazie
E perchè mai? Ripeto: I nomi dei parametri formali di un qualunque metodo non servono a nessuno se non al metodo stesso. Nascono e muoiono all'interno del metodo.

Quando tu richiami un metodo e gli passi un valore cosa sai del nome del parametro formale che riceverà il tuo valore?

Esempio:

codice:
Integer mioInt = new Integer( 5 );

Cosa sai di come si chiama il parametro formale che riceverà il valore 5? Si chiama "num"? Si chiama "value"? Si chiama "pippo"? Si chiama "x"? Non lo sai e non te ne frega nulla di saperlo. Lo stesso dicasi per qualunque classe esistente o che scriverai in futuro.


Ciao.