pytanie o konstruktor

0

Witam mam taki problem

Otóż mam klase B która ma jeden konstruktor przyjmujący jeden parametr. Oraz klase A która dziedziczy po klasie B.

Teraz pytanie za 100 pkt czy istnieje możliwość uzyskania informacji w konstruktorze klasy B że został wywołany podczas konstrukcji klasy dziecka czyli A ??

0

konstruktor rodzica jest wywoływany przed konstruktorem dziedziczącego dziecka, więc nie ma takiej opcji.

0

Ja znalazlem jedno rozwiązanie :
if(this.getClass().getName().equals(MenuTreeNode.class.getName()))

0

Nie ma rzeczy niemożliwych, wystarczy samemu coś wymyślić:

 
public A(boolean b){
if(b){
//wywołany przez potomka
}
{
.
.
.
public B(){
super(true);
}
0

Tam się nie da... Analiza stosu zawsze daje radę:

import java.util.Arrays;

public class Main3 {

    public static void main(String[] args) {
        new Y();
    }
}

class Z {
    public Z() {
        StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
        System.out.println(Arrays.toString(stackTrace));
    }
}

class Y extends Z {
    public Y() {
        super();
    }
}

I żeby było zabawniej

import java.util.Arrays;

public class Main3 {

    public static void main(String[] args) {
        new Y();
    }
}

class Z {
    public Z() {
        StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
        System.out.println(Arrays.toString(stackTrace));
    }
}

class Y extends Z {
    
}
import java.util.Arrays;

public class Main3 {

    public static void main(String[] args) {
        new Y(10);
    }
}

class Z {
    public Z() {
        StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
        System.out.println(Arrays.toString(stackTrace));
    }
}

class Y extends Z {
    public Y(int i){}
}

też będzie git, bo kompilator dopisze wywołanie konstruktora rodzica.

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