|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 | |
|
Senior Member
Iscritto dal: Mar 2005
Messaggi: 1653
|
[Java] Costruttori di superclassi: dubbio
Ciao...
ho un problema nel capire il funzionamento dei costruttori si una classe derivata. Riporto uno stralcio un po' ambiguo tratto dalla guida che sto studiando (Java 2 SDK 1.4, Apogeo): Quote:
Codice:
Derivata d = new Derivata(a,b); Riporto un esempio: Codice:
/* Classe base */
class Primo {
int x, y;
public Primo(int x, int y) {
this.x = x;
this.y = y;
}
public Primo(int x) {
this(x, 1);
}
void Stampa() {
System.out.println("X = "+x+" Y = "+y);
}
}
/* Classe derivata */
public class Secondo extends Primo {
int z;
public Secondo(int x, int y) {
this.z=0;
}
public Secondo(int x) {
this.z=-1;
}
public Secondo(int x, int y, int z) {
super(x, y);
this.z = z;
}
void Stampa() {
System.out.println("X = "+x+" Y = "+y+" Z = "+z);
}
public static void main(String [] argomenti) {
Primo a = new Primo(23, 67);
Secondo b = new Secondo(23, 67);
Secondo c = new Secondo(23);
System.out.print("A) ");
a.Stampa();
System.out.print("B) ");
b.Stampa();
System.out.print("C) ");
c.Stampa();
}
}
Mi spieghereste se sono io che interpreto male il testo della guida, oppure se e' la guida che si spiega male? Oppure ho sbagliato qualcosa nell'esempio che ho riportato? Grazie
__________________
gica78r@ncc-1701:~$ tar -c tar: Codardamente mi rifiuto di creare un archivio vuoto |
|
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Jun 2003
Città: Genova
Messaggi: 5676
|
secondo quanto scrive thinking in java è corretto che ti dia errore.
cito la traduzione alla seconda edizione: Quote:
La classe base ha il suo costruttore, e ha bisogno di uno o più argomenti, quindi quello di default senza argomenti non esise più. se nella derivata non si specifica con super a qunto spiega thinking in java il compilatore va a cercare quelli di default. se è stato ridefinito un costruttore questo non esiste più e hai un errore. ciao! |
|
|
|
|
|
|
#3 | |
|
Member
Iscritto dal: Aug 2004
Messaggi: 156
|
Quote:
|
|
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Mar 2005
Messaggi: 1653
|
Quote:
Quando dice "...costruttore con la stessa segnatura di tutte le superclassi..." io sono portato a pensare che, se stai definendo un costruttore con due argomenti int, allora viene richiamato il costruttore con due argomenti int della superclasse. Vi ringrazio per aver confermato i miei sospetti! Gica
__________________
gica78r@ncc-1701:~$ tar -c tar: Codardamente mi rifiuto di creare un archivio vuoto |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 14:30.



















