实例化方法或构造函数之外的对象?

时间:2013-03-31 12:17:16

标签: java oop

我对此感到困惑:

class ClassA {

   ClassB car = new ClassB();

   ClassA(){
   }

   someMethod(){
   }

}


ClassC{

   ClassC(){    
   }

   someMethod(){
        ClassA spaceship = new ClassA();
   }

}
  • B类未在构造函数或实例中实例化 方法。它也没有被宣布为静态。所以,恰好是classB 实例化?

  • 'car'实例有多长时间了?其他 如果是,那么“汽车”实例(B类)会发生什么 '太空飞船'实例(ClassA)被垃圾收集?

2 个答案:

答案 0 :(得分:2)

  

那么,究竟是什么时候实例化classB?

我认为ClassBClassA初始化时已初始化。首先更准确的是分配给内存的对象然后初始化它的字段(所以你的汽车变量)然后被称为构造函数。

  

'car'实例有多长时间了?

只要ClassA一般生活。但是,如果你明确地将你的汽车分配给NULL,那么如果它的“父母”还活着,也会被释放。

答案 1 :(得分:1)

以下是一个例子:

class A {
    B objectB = new B();

    public A() {
        System.out.println("In A Const");
    }
}

class B {

    public B() {
        System.out.println("In B const");
    }
}

class C {

    C() {}
    public void someMethod() {

        A objectA = new A();

        System.out.println("In method C");
    }
    public static void main(String args[]) {
        C objectC = new C();
        objectC.someMethod();
    }
}

O / P: 在B const 在一个Const 在方法C

每当创建一个对象时,首先调用构造函数,然后在构造函数中实现代码之前,初始化该特定类中的变量,以便首先执行类B的构造函数,然后执行类A的构造函数

谢谢