Buona notte a tutti :
Avrei bisogno di un aiuto che per me è una cosa grossa ma per esperti come Voi sarà una stupidaggine.
Sto studiando Java da vecchietto, con dei manuali Favolosi, ma ho un esempio che non mi risolve.
In un esempio del manuale " Java completa di Herbert Schildt" mi si propone un esempio riguardante l'utilizzo di "super"
Per motivi di semplicità l'esempio è fatto senza incapsulamento. Il mio problema : eseguo l'esempio senza incapsulamento
ed è tutto OK. Voglio provare a rifarlo con l'incapsulamento e non riesco a compilare il programmino perché non riesco a far funzionare
un metodo semplicissimo. Riporto il programmino di esempio senza incapsulamento che è OK e quello fatto da me che non riesco a compilare:
// Questo programmino tutto OK
public class MiaClasse_A_1 {
public int m;
}
public class MiaClasse_B_1 extends MiaClasse_A_1 {
public int m; // Questa "m" nella "MiaClasse_B_1" nasconde "m" nella classe "MiaClasse_A_1"
public MiaClasse_B_1 (int a, int b) { // Metodo costruttore di "MiaClasse_B_1"
super.m = a; // "m" in "MiaClasse_A_1"
m = b; // "m" in "MiaClasse_B_1"
}
public void show() { // Metodo "show()"
System.out.println(" m nella superclasse \"MiaClasse_A_1 \" vale: " + super.m);
System.out.println(" m nella sottoclasse \"MiaClasse_B_1 \" vale: " + m);
}
}
public class Usare_Super_1 {
public static void main(String args[]) {
MiaClasse_B_1 oggetto_1 = new MiaClasse_B_1(10, 20);
oggetto_1.show();
}
}
/* Questo con l'incapsulamento fatto da me non funziona,
non riesco a compilare il metodo show(). */
// Utilizzo di "super" per superare l'occultamento di nomi:
public class Mia_Classe_A {
private int m;
public void setM(int m) {
this.m = m;
}
public int getM() {
return m;
}
}
// Crea una sottoclasse che estende "Mia_Classe_A"
public class Mia_Classe_B extends Mia_Classe_A {
private int m;
public void setM(int m) {
this.m = m;
}
public int getM() {
return m;
}
public Mia_Classe_B (int a, int b) { // Metodo costruttore di "Mia_Classe_B"
super.setM(m);
m =b;
this.setM(m);
this.setM(m);
}
public void show() { // Metodo "show()"
System.out.println(" m nella superclasse \"MiaClasse_A_1 \" vale: " + super.setM(m));
System.out.println(" m nella sottoclasse \"MiaClasse_B_1 \" vale: " + this.m);
}
}
public class Usare_Super {
public static void main(String args[]) {
Mia_Classe_B ogg_B = new Mia_Classe_B ( 1, 2);
ogg_B.show();
}
}
// Grazie per la "dritta" marco mascardi