我对此感到困惑:
class ClassA {
ClassB car = new ClassB();
ClassA(){
}
someMethod(){
}
}
ClassC{
ClassC(){
}
someMethod(){
ClassA spaceship = new ClassA();
}
}
B类未在构造函数或实例中实例化 方法。它也没有被宣布为静态。所以,恰好是classB 实例化?
'car'实例有多长时间了?其他 如果是,那么“汽车”实例(B类)会发生什么 '太空飞船'实例(ClassA)被垃圾收集?
答案 0 :(得分:2)
那么,究竟是什么时候实例化classB?
我认为ClassB
在ClassA
初始化时已初始化。首先更准确的是分配给内存的对象然后初始化它的字段(所以你的汽车变量)然后被称为构造函数。
'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的构造函数
谢谢