class Super
{
    Super()
    {
        System.out.println("This is Super Constructor");
    }
}
class Sub extends Super
{
    Sub()
    {
        //super() is automatically added by the compiler here!
        System.out.println("This is Sub Constructor");
        //super(); I can't define it here coz it needs to be the first statement!
    }
}
class Test
{
    public static void main(String...args)
    {
        Sub s2=new Sub();
    }
}  

Выход:
Это супер конструктор
Это суб-конструктор

В любом случае, чтобы сделать это?
Или вы не можете получить доступ к Sub () до Super ()?
Я знаю, что Super Class или Inherited Classes инициализируются сначала, а затем подклассами, просто делая это только для целей обучения!

1
JDS 31 Авг 2017 в 21:49

5 ответов

Лучший ответ

Вот простой ответ. Концепция Наследования касается отношений IS-A . Технически, класс Dog - это ребенок класса Animal. , , после создания объекта класс Dog сначала становится ЖИВОТНЫМ , а затем классифицируется как СОБАКА .

... надеюсь, что это проясняет вещи. , так что это невозможно сделать так, как вы просили

0
Nonso Biose 31 Авг 2017 в 20:37

В конструкторе компилятор всегда добавляет вызов к super() для вас, если вы не предоставили этот звонок самостоятельно.

Если вы посмотрите с декомпилятором, ваш конструктор Sub будет выглядеть так:

Sub()
{
    super();
    System.out.println("This is Sub Constructor");
}

Так что нет, это невозможно.

2
Xvolks 31 Авг 2017 в 18:59

Сначала он всегда вызывает конструктор базового класса (parent), а затем инициирующий класс (child). В вашем случае super() будет выполняться первым.

Приятного чтения: Что выполняется первым, родительский или дочерний конструктор?

0
Mad-D 31 Авг 2017 в 18:57

Как говорят другие ответы не представляется возможным. Не уверен, почему вы пытаетесь это сделать, но лучше переосмыслите свою реализацию, так как вы всегда хотели бы убедиться, что унаследованные поля инициализируются первыми, поскольку реализация дочернего класса может зависеть от этого.

0
mojo586 31 Авг 2017 в 19:04

Как сказано, супер конструктор всегда вызывается. Может быть, вам следует переписать свои вопросы и объяснить, зачем вам это нужно.

0
Lothar 31 Авг 2017 в 19:25