详细说明下java内部类以及内部类使用场景以示例
时间: 2023-05-30 11:04:48 浏览: 74
Java内部类是定义在另一个类中的类,它可以访问外部类的所有成员,包括私有成员,并且可以使用外部类的引用来访问外部类的成员。内部类有以下几种类型:
1. 成员内部类:定义在外部类的成员位置,可以访问外部类的所有成员。
2. 局部内部类:定义在方法中的类,只能在该方法内使用。
3. 匿名内部类:没有类名的内部类,通常用于创建只需要一次的对象。
内部类的使用场景:
1. 封装:内部类可以访问外部类的私有成员,可以实现对外部类成员的封装。
2. 回调函数:内部类可以实现接口,可以作为回调函数使用。
3. 事件驱动编程:内部类可以实现事件监听器接口,可以响应事件。
4. 多继承:内部类可以继承一个类并实现一个接口,实现多重继承。
下面是一个使用内部类的示例:
```java
public class OuterClass {
private int outerField;
public OuterClass(int outerField) {
this.outerField = outerField;
}
public void outerMethod() {
final int localField = 0;
class LocalInnerClass {
public void localMethod() {
System.out.println("localField: " + localField);
System.out.println("outerField: " + outerField);
}
}
LocalInnerClass localInnerClass = new LocalInnerClass();
localInnerClass.localMethod();
}
class MemberInnerClass {
public void memberMethod() {
System.out.println("outerField: " + outerField);
}
}
public static void main(String[] args) {
OuterClass outerClass = new OuterClass(1);
outerClass.outerMethod();
OuterClass.MemberInnerClass memberInnerClass = outerClass.new MemberInnerClass();
memberInnerClass.memberMethod();
}
}
```
这个示例包含了成员内部类和局部内部类两种类型的内部类。在outerMethod方法中,定义了一个局部内部类LocalInnerClass,它可以访问外部类的局部变量localField和成员变量outerField。在main方法中,创建了一个OuterClass对象,并通过该对象创建了一个成员内部类MemberInnerClass的实例。通过成员内部类的实例,可以访问外部类的成员变量outerField。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)