Obiekty tego samego typu

Obiekty tego samego typu
Draqun
  • Rejestracja:ponad 15 lat
  • Ostatnio:prawie 10 lat
0

Otóż przyszedł czas na naukę javy i napotkałem problem, który spowodował, że oczy wyszły mi z orbit, ponieważ taka sytuacja nie powinna mieć miejsca(a w każdym razie w C++ by nie miała). Otóż tworze dwa obiekty typu Punkt i w momencie kiedy zmieniam współrzędne jednego z nich to zmieniają się współrzędne drugiego z nich. Dziwne to jest ponieważ oba obiekty są zupełnie innymi zmiennymi. Czy to jakieś dziwne zachowanie Javy czy może w moim kodzie coś jest nie tak?

Kod programu

Kopiuj
class Punkt {
	private
		static int x;
		static int y;
	public
	int retX(){
		return x;
	}
	
	int retY(){
		return y;
	}
	
	void setX(int X){
		x = X;
	}
	
	void setY(int Y){
		y = Y;
	}

	void setXY(int X, int Y){
		x = X;
		y = Y;
	}
	
	Punkt(){
		x = 0;
		y = 0;
	}
	Punkt(int X, int Y){
		x = X;
		y = Y;
	}
}
Kopiuj
import static java.lang.System.*;

public class Operacje {
	
	public static void main(String[] args){
		Punkt p1=new Punkt();
		Punkt p2=new Punkt(1,1);
		int w,x,y,z;
		
		w=p1.retX();
		x=p1.retY();
		out.println("Współrzędne punktu pierwszego\nw = "+w+"; x = "+x+";");
		
		y=p2.retX();
		z=p2.retY();
		out.println("Współrzędne punktu drugiego\ny = "+y+"; z = "+z+";");
		
		p1.setXY(2, 1);
		p2.setXY(3, 4);
		
		w=p1.retX();
		x=p1.retY();
		out.println("Współrzędne punktu pierwszego\nw = "+w+"; x = "+x+";");
		
		y=p2.retX();
		z=p2.retY();
		out.println("Współrzędne punktu drugiego\ny = "+y+"; z = "+z+";");
	}

}

Wynik działania powyższego kodu

Kopiuj
Współrzędne punktu pierwszego
w = 1; x = 1;
Współrzędne punktu drugiego
y = 1; z = 1;
Współrzędne punktu pierwszego
w = 3; x = 4;
Współrzędne punktu drugiego
y = 3; z = 4;

Taki 3 jak nas 2 nie znajdziecie ani jednego. Linux damian-E720 3.2.0-49-generic-pae #75-Ubuntu SMP Tue Jun 18 18:00:21 UTC 2013 i686 i686 i386 GNU/Linux
edytowany 1x, ostatnio: Draqun
Shalom
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
1

Zapewniam cię że jak w C++ zadeklarujesz pola w klasie jako STATYCZNE (co też tu uczyniłeś) to efekt będzie identyczny. Bo pole STATYCZNE to pole należące do KLASY a nie do OBIEKTU.


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
Draqun
  • Rejestracja:ponad 15 lat
  • Ostatnio:prawie 10 lat
0

Faktycznie :D. Takie niedopatrzenie. Aż się czerwony zrobiłem.

Dzięki wielkie. Temat zamknięty.


Taki 3 jak nas 2 nie znajdziecie ani jednego. Linux damian-E720 3.2.0-49-generic-pae #75-Ubuntu SMP Tue Jun 18 18:00:21 UTC 2013 i686 i686 i386 GNU/Linux

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.