- 内部类
Inner
实例化时机:
- 成员内部类
Inner
的实例化依赖于外部类Outer
的实例。只有先创建了外部类Outer
的实例,才能创建成员内部类Inner
的实例。
- 以下是代码示例:
class Outer {
class Inner {
public void print() {
System.out.println("This is Inner class.");
}
}
public static void main(String[] args) {
Outer outer = new Outer();
Outer.Inner inner = outer.new Inner();
inner.print();
}
}
- 在上述代码中,首先创建了
Outer
类的实例outer
,然后通过outer.new Inner()
创建了Inner
类的实例inner
。这表明只有在外部类实例化后,才能实例化其成员内部类。
- 内部类
Inner
静态成员初始化规则:
- 成员内部类不能有静态成员,除非该内部类是
static
修饰的静态内部类。
- 对于静态内部类,其静态成员的初始化遵循与普通类静态成员相同的规则。即当类第一次被加载时,静态成员被初始化。
- 以下是静态内部类包含静态成员的代码示例:
class OuterStatic {
static class InnerStatic {
static int staticVar = 10;
public static void printStatic() {
System.out.println("Static variable in InnerStatic: " + staticVar);
}
}
public static void main(String[] args) {
OuterStatic.InnerStatic.printStatic();
}
}
- 在上述代码中,
InnerStatic
是OuterStatic
的静态内部类,它包含静态变量staticVar
和静态方法printStatic
。当OuterStatic.InnerStatic.printStatic()
被调用时,InnerStatic
类被加载,其静态变量staticVar
被初始化。