Zadanie : obiekt istniał w momencie wywołania konstruktora? Pomocy

0

Przedstaw definicje klasy B popierajaca teze, jakoby obiekt istniał w momencie wywołania
konstruktora.

Poprosił bym o pomoc w takim programie zupełnie nie wiem jak sie zabrac ;/

 public class B {
	
	public int a;
	public int b;
	
	public B(){		
	}
	public B(int a, int b){
		this.a=a;
		this.b=b;
	}
	
	
	public void show(){
		System.out.println("int 1 "+a);
		System.out.println("int 2 "+b);
	}
	
	public static void main(String[] args) {
	
		B b1=new B(2,3);
		B b2=new B();
		
		
		
		b1.show();
		b2.show();

	}

}

Wymyśliłem coś takiego ale nawet jak to nie wiem jak to potem prowadzącemu wyjaśnić ale nie wiem ???

Prosze o pomoc :D!

0

To co napisałeś nie ma nic wspólnego z poleceniem. Obiekt w trakcie działania konstruktora istnieje, ale nie musi być poprawnie zainicjalizowany. jak to pokazać? Na przykład tak:

class A{
    public A(B otherObject){
        otherObject.setA(this);
        // nasz otherObject ma juz dostęp do obiektu klasy A, mimo że konstruktor jeszcze sie nie zakończył
        // cośtam dalej w konstruktorze
    }
}

class B{
    private A a;
    public setA(A a){
        this.a = a;
    }
}

Popatrz co sie dzieje w tym kodzie:

  • W trakcie działania konstruktora (!) przekazujemy innemu obiektowi referencje do obiektu który jest "w trakcie tworzenia". Taki obiekt może jeszcze nie być w pełni zainicjalizowany bo w konstruktorze mogą nadal być jakieś operacje do wykonania, a inny obiekt już ma dostęp!
  • Gdyby klasa B to był jakiś wątek (Thread / Runnable / Callable) to mogłoby się okazać, że obiekt A jeszcze nie jest do końca stworzony a B już na nim pracuje

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