📜  Java成员内部类(1)

📅  最后修改于: 2023-12-03 15:16:35.527000             🧑  作者: Mango

Java成员内部类

在Java中,成员内部类是定义在另一个类的内部的类。成员内部类与普通内部类的区别在于,它与外部类的对象关联,可以访问外部类的成员变量和方法。本文将向程序员介绍Java成员内部类的基本概念、使用方法以及注意事项。

定义成员内部类

成员内部类的定义格式如下:

class OuterClass {
    //...

    class InnerClass {
        //...
    }
}

在上述代码中,OuterClass是外部类的名称,而InnerClass是成员内部类的名称。注意,成员内部类的定义是在外部类内部的,与外部类的成员变量和方法处于相同的作用域。

创建成员内部类的实例

要创建成员内部类的实例,必须先创建外部类的实例,然后使用外部类的实例来访问成员内部类。示例代码如下:

OuterClass outer = new OuterClass();
OuterClass.InnerClass inner = outer.new InnerClass();

上述代码中,首先创建了外部类的实例outer,然后使用outer来创建内部类的实例inner。需要注意的是,实例化内部类的语法是outer.new InnerClass(),表示使用外部类的实例来创建内部类的实例。

访问外部类的成员

成员内部类可以访问外部类的所有成员,包括私有成员。在内部类中,可以直接访问外部类的成员变量和方法,无需使用任何特殊的语法。

class OuterClass {
    int outerVar = 10;

    class InnerClass {
        void printOuterVar() {
            System.out.println(outerVar);
        }
    }
}

上述代码中,内部类InnerClass可以直接访问外部类OuterClass的成员变量outerVar

特殊语法:this与外部类的引用

在成员内部类中,可以使用this关键字来引用内部类自身的对象。如果需要引用外部类的对象,可以使用特殊的语法外部类名称.this。示例代码如下:

class OuterClass {
    int var = 10;

    class InnerClass {
        int var = 20;

        void printVars() {
            int var = 30;
            System.out.println("Inner var: " + this.var);
            System.out.println("Outer var: " + OuterClass.this.var);
            System.out.println("Local var: " + var);
        }
    }
}

在上述代码中,InnerClass中的printVars()方法打印了内部类的变量、外部类的变量和局部变量。使用this.var引用内部类的变量,使用OuterClass.this.var引用外部类的变量。

注意事项

在使用成员内部类时,有几点需要注意:

  • 成员内部类不能拥有静态变量和静态方法,因为它与外部类的对象相关联。
  • 成员内部类可以使用外部类的所有成员变量和方法,包括私有成员。
  • 在外部类外部访问内部类时,需使用外部类的实例来创建内部类的实例。
  • 成员内部类可以用来实现某个特定接口,或者继承某个类,从而实现更复杂的功能。

以上是关于Java成员内部类的基本介绍和使用方法。通过理解成员内部类的概念和语法规则,你可以更好地利用成员内部类来组织和管理你的Java代码。