Obiekty tego samego typu

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

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;
	}
}
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

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;
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.

0

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

Dzięki wielkie. Temat zamknięty.

1 użytkowników online, w tym zalogowanych: 0, gości: 1