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

Odpowiedz Nowy wątek
2014-12-14 19:25
Mistu
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!

Pozostało 580 znaków

2014-12-14 19:33
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

Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...
edytowany 1x, ostatnio: Shalom, 2014-12-14 19:34

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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