详解Java内部类的访问格式和规则
1. 什么是内部类?
在Java中,内部类是指在一个类的内部定义的类。内部类可以访问外部类的所有成员(包括私有成员),并且内部类可以被外部类的其他成员访问。
2. 内部类的访问格式和规则
有四种类型的内部类,分别是成员内部类、静态内部类、局部内部类和匿名内部类。不同类型的内部类有不同的访问格式和规则。
2.1 成员内部类
成员内部类是定义在外部类的成员位置上的类,成员内部类可以直接访问外部类的成员变量和方法。成员内部类的访问格式如下:
class OuterClass {
...
class InnerClass {
...
}
}
示例1:在外部类的方法中实例化成员内部类,并调用内部类的方法。
class OuterClass {
private int outerVar;
void outerMethod() {
InnerClass inner = new InnerClass();
inner.innerMethod();
}
class InnerClass {
void innerMethod() {
System.out.println("访问外部类的成员变量: " + outerVar);
System.out.println("访问外部类的方法");
outerMethod();
}
}
}
2.2 静态内部类
静态内部类是定义在外部类的成员位置上的静态类,静态内部类可以直接访问外部类的静态成员变量和方法,但不能直接访问外部类的非静态成员变量和方法。静态内部类的访问格式如下:
class OuterClass {
...
static class InnerClass {
...
}
}
示例2:在静态方法中实例化静态内部类,并调用内部类的方法。
class OuterClass {
private static int staticOuterVar;
private int outerVar;
static void outerStaticMethod() {
InnerClass inner = new InnerClass();
inner.innerMethod();
}
static class InnerClass {
void innerMethod() {
System.out.println("访问外部类的静态成员变量: " + staticOuterVar);
}
}
}
2.3 局部内部类
局部内部类是定义在外部类的方法中的类,局部内部类只能在当前方法内使用,无法从外部访问。局部内部类的访问格式如下:
class OuterClass {
void outerMethod() {
...
class LocalInnerClass {
...
}
}
}
示例3:在外部类的方法中实例化局部内部类,并调用内部类的方法。
class OuterClass {
void outerMethod() {
int localVar = 10;
class LocalInnerClass {
void innerMethod() {
System.out.println("访问外部方法的局部变量: " + localVar);
}
}
LocalInnerClass inner = new LocalInnerClass();
inner.innerMethod();
}
}
2.4 匿名内部类
匿名内部类是没有名字的内部类,匿名内部类可以用来创建一个类的实例,并重写其方法。匿名内部类的访问格式如下:
new 父类构造器(构造参数) / 实现接口() {
// 匿名内部类的类体部分
}
示例4:使用匿名内部类创建接口实例,并重写接口的方法。
interface MyInterface {
void interfaceMethod();
}
class OuterClass {
void outerMethod() {
MyInterface inner = new MyInterface() {
@Override
public void interfaceMethod() {
System.out.println("匿名内部类重写接口方法");
}
};
inner.interfaceMethod();
}
}
以上就是Java内部类的访问格式和规则的详细解释。请注意,不同类型的内部类在访问外部类成员的权限上有所差异,需要根据需求选择合适的内部类类型来使用。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解java内部类的访问格式和规则 - Python技术站