Вызовите конструктор дочернего класса из параметризованного конструктора родительского класса - PullRequest
0 голосов
/ 15 октября 2018

Итак, у меня есть родительский класс и дочерний класс, унаследованный от него.Родительский класс имеет конструктор по умолчанию и параметризованный.Дочерний класс имеет немного другой конструктор по умолчанию, но точно такой же код в параметризованном конструкторе.Выглядит это так:

class Parent{
    public String A;
    public int B;

    public Parent(){
        A = "parent";
        B = 0;
    }

    public Parent(int v){
        this();
        B = v;
    }
}

class Child extends Parent{

    public Child(){
        A = "child";
        B = 0;
    }

    public Child(int v){
        this();
        B = v;
    }
}

public static void main(String args[]) {
    Child c = new Child(5);
    System.out.println("A: "+c.A); // > A: child
}

Теперь все работает отлично и модно, но скучно.Если я заменю Child(int v){} на следующее:

public Child(int v){
    super(v);
}

Я сохраняю 1 строку, и это веселее, но, очевидно, super(v) вызывает this() Родителя внутри.

public static void main(String args[]) {
    Child c = new Child(5);
    System.out.println("A: "+c.A); // > A: parent
}

Issuper() можно назвать this()?

Я знаю, что могу сделать Class(){this(0)}, но это не весело.

Я думаю, вы можете сделать что-то подобноеиграя с ключевым словом virtual в C ++, может быть?Во всяком случае, что ты думаешь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...