MST

星途 面试题库

面试题:Java内部类中成员内部类的使用方式及特点

请详细说明Java成员内部类如何定义、如何创建实例,以及它具有哪些特点,例如访问权限方面等。
40.6万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试

定义

在Java中,成员内部类是定义在另一个类内部的类,作为外部类的一个成员。其定义格式如下:

class OuterClass {
    // 外部类成员变量
    private int outerVar; 

    // 成员内部类定义
    class InnerClass {
        // 内部类成员变量
        private int innerVar; 

        // 内部类方法
        public void innerMethod() {
            System.out.println("访问外部类变量 outerVar: " + outerVar);
        }
    }
}

创建实例

要创建成员内部类的实例,必须先有外部类的实例。创建方式如下:

public class Main {
    public static void main(String[] args) {
        // 创建外部类实例
        OuterClass outer = new OuterClass(); 
        // 使用外部类实例创建内部类实例
        OuterClass.InnerClass inner = outer.new InnerClass(); 
        inner.innerMethod();
    }
}

特点

  1. 访问权限
    • 成员内部类可以访问外部类的所有成员,包括私有成员。例如上述代码中,InnerClassinnerMethod方法可以访问OuterClass的私有变量outerVar
    • 外部类要访问成员内部类的成员,必须通过成员内部类的实例。
  2. 作用域:成员内部类的作用域在外部类内部。它不能在外部类之外直接使用,除非通过外部类实例来访问。
  3. 独立性:成员内部类虽然依赖于外部类实例,但它有自己独立的生命周期,可以有自己的属性和方法,与外部类相互独立又存在关联。
  4. 静态成员限制:成员内部类不能包含静态成员,除了静态常量(static final)。因为成员内部类实例是依赖于外部类实例的,而静态成员是属于类级别的,不依赖于实例,这会导致矛盾。