Forse non sono riuscito a capire a fondo la tua idea, se invece l'ho capita credo che sia una cosa piuttosto inutile.
Tu vorresti, tramite un metodo di classe (anche se, a prima vista, dall'esempio che hai riportato si tratterebbe di un metodo d'istanza), far sì che un oggetto 'a' della classe A prenda i valori delle variabili interne di un oggetto 'b' della classe A e viceversa. Cioè creare uno swap di oggetti, tramite lo swap delle loro proprietà.
Si potrebbe fare, ma sarebbe la stessa operazione che si farebbe con una successione di passi alternativi, non avendo a disposizione il metodo. Perchè? Per il semplice fatto che un oggetto (nel modo classico di vedere gli oggetti) non ti dà accesso alle proprietà interne se non attraverso i suoi metodi. Questo significa che all'interno del metodo richiamato avrai un oggetto della stessa classe al quale, però, non puoi "rubare i segreti" nascosti al suo interno, se non attraverso i metodi da esso messi a disposizione. Questa frase è molto contorta, ma vedrò di spiegartela attraverso un esempio. Prendiamo questa classe:
codice:
class Oggetto {
private int mioValore1;
private int mioValore2;
public Oggetto() {
mioValore1 = mioValore2 = 0;
}
public void setPrimoValore(int primoValore) {
mioValore2 = primoValore;
}
public void setSecondoValore(int secondoValore) {
mioValore1 = secondoValore;
}
public int getPrimoValore() { return mioValore2; }
public int getSecondoValore() { return mioValore1; }
}
Se a questo codice vogliamo aggiungere un metodo per scambiare i valori interni di due oggetti nel modo in cui hai chiesto tu nell'esempio dovremo aggiungere un metodo scambiaValori():
codice:
public void scambiaValori(Oggetto o) {...}
Ora come ci comportiamo dentro al metodo? Come l'interfaccia dell'oggetto ci impone: settiamo i valori dell'oggetto chiamante con i valori dell'oggetto passato come parametro, salvandoli prima in variabili temporanee e poi settiamo i valori dell'oggetto passato come parametro con i valori che c'erano prima nell'oggetto chiamante:
codice:
public void scambiaValori(Oggetto o) {
int temp1 = o.getSecondoValore();
int temp2 = o.getPrimoValore();
o.setPrimoValore(mioValore2);
o.setSecondoValore(mioValore1);
mioValore1 = temp1;
mioValore2 = temp2;
}
Ma, come ben si vede, questa sequenza di passi la si poteva fare benissimo anche senza il metodo (il quale risulta un po' inutile).
Da notare che non possiamo accedere direttamente alle proprietà dell'oggetto passato come parametro, a causa (e per fortuna) del fatto che gli oggetti si possono manipolare solo attraverso i propri metodi. Qualcuno potrebbe obiettare: "basta rendere pubbliche le proprietà" e io obietterei subito "E a che ti servono gli oggetti allora? Sono stati inventati apposta per evitare queste cose, per proteggere i dati". E poi sarebbe una modifica di poco valore, perchè non guadagna nulla il metodo appena proposto in termini di utilità.
Se la tua idea fosse diversa, allora non l'ho capita. Se era questa, spero di aver risposto.
Ciao.