Snakethesniper
Utente Attivo
- Messaggi
- 18
- Reazioni
- 0
- Punteggio
- 25
Ciao a tutti, spero possiate aiutarmi a capire una cosa di un esercizio. Il testo è :
Si considerino le tre classi concrete Alfa, Beta, Gamma.
La classe Alfa implementa i metodi di segnatura m(long x) e m(int x).
La classe Beta estende Alfa e implementa i metodi di segnatura m(long x) e m(double x).
La classe Gamma estende Beta e implementa i metodi di segnatura m(double x) e m(int x).
Per ciascuna delle seguenti coppie di istruzioni si determini se la coppia viene compilata correttamente e, in
caso positivo, si determini la segnatura selezionata dal compilatore e la classe in cui il metodo effettivamente
eseguito al runtime `e stato implementato.
Nota: Si rammenti che 2 denota un letterale int, 2L denota un letterale long e 2.0 denota un letterale
double.
Ora, alla voce
dice appunto che non compila. Perchè?
Io ho pensato che anche se Beta possiede il metodo m(doublex) la variabile p è di tipo Alfa e di conseguenza siccome Alfa non possiede metodi per i double non può essere compilato. E' corretto?
Si considerino le tre classi concrete Alfa, Beta, Gamma.
La classe Alfa implementa i metodi di segnatura m(long x) e m(int x).
La classe Beta estende Alfa e implementa i metodi di segnatura m(long x) e m(double x).
La classe Gamma estende Beta e implementa i metodi di segnatura m(double x) e m(int x).
Per ciascuna delle seguenti coppie di istruzioni si determini se la coppia viene compilata correttamente e, in
caso positivo, si determini la segnatura selezionata dal compilatore e la classe in cui il metodo effettivamente
eseguito al runtime `e stato implementato.
Nota: Si rammenti che 2 denota un letterale int, 2L denota un letterale long e 2.0 denota un letterale
double.
Ora, alla voce
Codice:
Alfa p = new Beta();
p.m(2.0);
non compila
Io ho pensato che anche se Beta possiede il metodo m(doublex) la variabile p è di tipo Alfa e di conseguenza siccome Alfa non possiede metodi per i double non può essere compilato. E' corretto?