2013-03-31 48 views
3

我在这个感到困惑:实例化方法或构造的外部对象?

class ClassA { 

    ClassB car = new ClassB(); 

    ClassA(){ 
    } 

    someMethod(){ 
    } 

} 


ClassC{ 

    ClassC(){  
    } 

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

} 
  • B类未在构造函数或方法 实例。它也没有被声明为静态的。那么,究竟何时classB是 实例化?

  • 多长时间的车“实例活?在其他 单词中,如果(类别A)的太空船实例 获得垃圾收集,“B”车辆实例(B类)会发生什么?

回答

2

所以,当正好CLASSB被实例化?

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

多长时间的车“实例活?

只要ClassA一般生活。但是,如果您明确地将您的车指定为NULL,那么如果它的“父母”存在,它也会被释放。

+0

谢谢,我明白你在说什么,但想知道在字段声明中实例化ClassB的好处而不是在构造函数中? – Crocodile

+0

@鳄鱼通常以这种方式用于声明静态或最终的字段,你确切地知道它们的初始值。 – Sajmon

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: 在乙常量 在一个const 在方法C中

当一个对象在第一次创建构造函数被调用和执行之前代码在构造所以这就是执行类B的构造函数如何首先在该特定类中的变量被初始化,然后将该类的

由于

相关问题