一、目录
- 介绍
- 成员内部类
- 局部内部类
- 匿名内部类
- 静态内部类
- 总结
二、示例
2.1. 介绍
在Java中,内部类是一个强大而有用的概念,允许在一个类的内部定义另一个类。本文将详细介绍四种常见的内部类类型,并提供示例代码以帮助理解其用法。
2.21.成员内部类
成员内部类是定义在另一个类的内部并在该类方法外的类。它可以访问外部类的所有成员,包括私有成员。以下是一个示例:
class OuterClass {
private int outerField = 10;
class InnerClass {
void display() {
System.out.println("OuterField: " + outerField);
}
}
}
//创建外部类对象
OuterClass outerObj = new OuterClass();
//创建内部类对象
OuterClass.InnerClass innerObj = outerObj.new InnerClass();
//调用内部类中的方法
innerObj.display();
2.22.局部内部类
局部内部类是定义在方法内部的类,只能在该方法内部访问。以下是一个示例:
class OuterClass {
void outerMethod() {
//方法内创建局部内部类
class LocalInnerClass {
void display() {
System.out.println("Inside local inner class");
}
}
LocalInnerClass innerObj = new LocalInnerClass();
innerObj.display();
}
}
2.2.3.匿名内部类
匿名内部类是没有类名的内部类,通常用于创建一个接口或抽象类的实例。以下是一个示例:
interface Greeting {
void greet();
}
public class Main {
public static void main(String[] args) {
//实现匿名内部类 创建对象 并将这个对象赋值给greeting
Greeting greeting = new Greeting() {
@Override
public void greet() {
System.out.println("Hello from anonymous inner class");
}
};
greeting.greet();
}
}
2.2.4.静态内部类
静态内部类是定义在另一个类内部的静态类,它可以直接访问外部类的静态成员,而无需创建外部类的实例。以下是一个示例:
class OuterClass {
//用static修饰
static class StaticInnerClass {
void display() {
System.out.println("Inside static inner class");
}
}
}
//静态内部类 创建对象的方式
OuterClass.StaticInnerClass innerObj = new OuterClass.StaticInnerClass();
innerObj.display();
三、总结
内部类为Java编程提供了更多的灵活性和组织代码的能力。不同类型的内部类适用于不同的场景,帮助提高代码的可读性和模块化程度。