28/09/17 15:32
alexrr2iggs
salve! volevo chiederevi delle dellucidazioni sull mecanismo dell'assegnazione tra reference.
In particolare ho fatto questa prova qua:
output:
nuovo ogetto Madre "mdr" istanziato
nuovo ogetto Madre "fgl" istanziato
nuovo ogetto Figlia "fgl" istanziato
testReference.Madre@33909752
nomeOggetto = "oggetto Madre, mdr"
stringaDefault = "default madre"
oggetto Madre, mdr
default madre
testReference.Figlia@55f96302
nomeOggetto = "oggetto Figlia"
stringaDefault = "default figlia"
oggetto Figlia
default figlia
dopo aver cambiato il vallore delle stringhe "stringaDefault" degli ogetti puntati da m ed f
testReference.Madre@33909752
nomeOggetto = "oggetto Madre, mdr"
stringaDefault = "string M. diversa"
oggetto Madre, mdr
string M. diversa
testReference.Figlia@55f96302
nomeOggetto = "oggetto Figlia"
stringaDefault = "stringa F. diversa"
oggetto Figlia
stringa F. diversa
dopo aver assegnato il vallore di f ad m
testReference.Figlia@55f96302
nomeOggetto = "oggetto Figlia"
stringaDefault = "stringa F. diversa"
oggetto Madre, fgl
default madre
testReference.Figlia@55f96302
nomeOggetto = "oggetto Figlia"
stringaDefault = "stringa F. diversa"
oggetto Figlia
stringa F. diversa
metodo comune Figlia
metodoMadre
oggetto Madre, fgl
default madre
metodoMadre
oggetto Madre, fgl
default madre
penso di aver capito cosa e sucesso (ma probabilmente no), quello che invecce non capisco e il meccanismo che sta alla base.
quello che ho capito l'ho schemmatizato cosi:
In particolare ho fatto questa prova qua:
public class Madre { public String nomeOgetto="oggetto Madre, "; public String stringaDefault="default madre"; public Madre(String s) { this.nomeOgetto+=" "+s; System.out.println("nuovo ogetto Madre \""+s+"\" istanziato"); } public void metodoComune() { System.out.println("metodo comune Madre"); } public void metodoMadre() { System.out.println("metodoMadre"); System.out.println(nomeOgetto+'\n'+stringaDefault); } public void aStringa() { System.out.println(this.toString()); System.out.println("nomeOggetto = \""+nomeOgetto+"\""); System.out.println("stringaDefault = \""+stringaDefault+"\"\n"); } }
public class Figlia extends Madre { public String nomeOgetto="oggetto Figlia"; public String stringaDefault="default figlia"; public Figlia(String s) { super(s); System.out.println("nuovo ogetto Figlia \""+s+"\" istanziato"); } public void metodoComune() { System.out.println("metodo comune Figlia"); } public void metodoFiglia() { System.out.println("metodo Figlia"); } public void aStringa() { System.out.println(this.toString()); System.out.println("nomeOggetto = \""+nomeOgetto+"\""); System.out.println("stringaDefault = \""+stringaDefault+"\"\n"); } }
public class Main { static Madre m=new Madre("mdr"); static Figlia f=new Figlia("fgl"); static void info() { m.aStringa(); System.out.println(m.nomeOgetto+'\n'+m.stringaDefault+"\n\n"); f.aStringa(); System.out.println(f.nomeOgetto+'\n'+f.stringaDefault+"\n\n"); } public static void main(String[] args) { System.out.print('\n'); info(); m.stringaDefault="string M. diversa"; f.stringaDefault="stringa F. diversa"; System.out.println("dopo aver cambiato il vallore delle stringhe \"stringaDefault\" degli ogetti puntati da m ed f \n"); info(); m=f; System.out.println("dopo aver assegnato il vallore di f ad m \n"); info(); m.metodoComune(); System.out.print('\n'); m.metodoMadre(); System.out.print('\n'); f.metodoMadre(); //m.metodoFiglia(); The method metodoFiglia() is undefined for the type Madre } }
output:
nuovo ogetto Madre "mdr" istanziato
nuovo ogetto Madre "fgl" istanziato
nuovo ogetto Figlia "fgl" istanziato
testReference.Madre@33909752
nomeOggetto = "oggetto Madre, mdr"
stringaDefault = "default madre"
oggetto Madre, mdr
default madre
testReference.Figlia@55f96302
nomeOggetto = "oggetto Figlia"
stringaDefault = "default figlia"
oggetto Figlia
default figlia
dopo aver cambiato il vallore delle stringhe "stringaDefault" degli ogetti puntati da m ed f
testReference.Madre@33909752
nomeOggetto = "oggetto Madre, mdr"
stringaDefault = "string M. diversa"
oggetto Madre, mdr
string M. diversa
testReference.Figlia@55f96302
nomeOggetto = "oggetto Figlia"
stringaDefault = "stringa F. diversa"
oggetto Figlia
stringa F. diversa
dopo aver assegnato il vallore di f ad m
testReference.Figlia@55f96302
nomeOggetto = "oggetto Figlia"
stringaDefault = "stringa F. diversa"
oggetto Madre, fgl
default madre
testReference.Figlia@55f96302
nomeOggetto = "oggetto Figlia"
stringaDefault = "stringa F. diversa"
oggetto Figlia
stringa F. diversa
metodo comune Figlia
metodoMadre
oggetto Madre, fgl
default madre
metodoMadre
oggetto Madre, fgl
default madre
penso di aver capito cosa e sucesso (ma probabilmente no), quello che invecce non capisco e il meccanismo che sta alla base.
quello che ho capito l'ho schemmatizato cosi:
Ultima modifica effettuata da alexrr2iggs 28/09/17 15:33
aaa