内部类是定义在类内部的类,它可以访问外部类的成员,包括私有成员。
内部类包括:成员内部类,局部内部类,匿名内部类,静态内部类。
1.成员内部类:
成员内部类是作为外部类的成员存在的内部类。它可以像外部类的其他成员(如成员变量、成员方法)一样,拥有各种访问修饰符(public、private、protected 等)。
示例:
class OuterClass {
private int outerField = 10;
class InnerClass {
public void innerMethod() {
System.out.println("Outer field: " + outerField);
}
}
}
2.局部内部类:
局部内部类是定义在方法内部的类。它的作用域仅限于定义它的方法。
示例:
public class Outer {
public void outerMethod() {
class LocalInner {
void localMethod() {
System.out.println("This is a local inner class method");
}
}
LocalInner localInner = new LocalInner();
localInner.localMethod();
}
}
3.匿名内部类:
匿名内部类是没有名字的内部类,通常用于创建一个实现某个接口或继承某个类的对象,并直接使用。
示例:
interface MyInterface {
void interfaceMethod();
}
public class Main {
public static void main(String[] args) {
MyInterface myInterface = new MyInterface() {
@Override
public void interfaceMethod() {
System.out.println("Anonymous inner class implementing interface");
}
};
myInterface.interfaceMethod();
}
}
4.静态内部类:
静态内部类使用 static
修饰,它不能直接访问外部类的非静态成员,但可以访问外部类的静态成员。
示例:
class Outer {
static int outerStaticField = 20;
static class StaticInner {
public void innerMethod() {
System.out.println("Outer static field: " + outerStaticField);
}
}
}