Oppure

Loading
28/09/17 15:32
alexrr2iggs
salve! volevo chiederevi delle dellucidazioni sull mecanismo dell'assegnazione tra reference.
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
28/09/17 15:37
alexrr2iggs
la schematizazione e concettualmente correta?

penso che il problema sia il fatto che non ho capito molto bene come funzionano i reference, qualli vallori contengono.

ps. sopra ho messo in allegato il primo schema (prima dell assegnazione), il secondo (dopo l'assegnazione) lo allego qua
aaa