📅  最后修改于: 2023-12-03 15:16:35.527000             🧑  作者: Mango
在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
。示例代码如下:
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代码。