Почему этот конкретный член класса в приведенном ниже коде не инициализирован?

#java

#java

Вопрос:

     class nonStatic1 {
        nonStatic2 n2 = new nonStatic2();

        nonStatic1() {
            this.print();
        }

        void print() {
            System.out.println("insidenonStatic1");
        }
    }


    class nonStatic2 {

        nonStatic2() {
            this.print();
        }

        void print() {
            System.out.println("insidenonStatic2");
        }
    }

class nonStatic3 {
    nonStatic1 n1 = new nonStatic1();

    nonStatic3() {
        this.print();
    }

    void print() {
        System.out.println("insidenonStatic3");
    }

}

public class NonStaticInitializationTest {
    nonStatic2 n2 = new nonStatic2(); // <-- Never initialized!!

    public static void main(String args[]) {
        System.out.println("initialising n3 through main");
        nonStatic3 n3 = new nonStatic3();
    }

}
  

Комментарии:

1. К вашему сведению, ниже приведен вывод :

2. инициализация n3 через main insidenonStatic2 insidenonStatic1 insidenonStatic3

3. добавьте это к вопросу, а не в комментарий. Вы указываете на инициализацию, ваш вопрос не имеет смысла.

4. @Stultuske Не могли бы вы мне помочь?

5. Я вставил это в ответ, но это довольно просто, это вы должны знать, прежде чем пытаться создавать и создавать экземпляры других классов.

Ответ №1:

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

Как только вы создадите этот экземпляр, ваш nonStatic2 экземпляр будет создан, но в настоящее время вы работаете только в вашем основном методе, который является статическим членом и не требует экземпляра своего класса.

Комментарии:

1. Понял!! хорошо объяснено!, Спасибо, что помогли мне в Stultuske 🙂

2. если это отвечает на ваш вопрос, пожалуйста, примите ответ.