什么是内部类,成员内部类,局部内部类,匿名内部类,静态内部类,请用代码举例说明
时间: 2024-04-22 14:24:05 浏览: 89
内部类是指定义在其他类内部的类。根据定义的位置和特点,内部类可以分为成员内部类、局部内部类、匿名内部类和静态内部类。
1. 成员内部类:
成员内部类是定义在另一个类的内部,并且与外部类实例相关联的内部类。它可以访问外部类的成员变量和方法,甚至可以访问外部类的私有成员。
```java
public class OuterClass {
private int outerVariable = 10;
public class InnerClass {
public void display() {
System.out.println("Outer variable: " + outerVariable);
}
}
}
// 使用成员内部类
public class Main {
public static void main(String[] args) {
OuterClass outer = new OuterClass();
OuterClass.InnerClass inner = outer.new InnerClass();
inner.display();
}
}
```
2. 局部内部类:
局部内部类是定义在方法或作用域内的内部类,只能在定义它的方法或作用域中使用。局部内部类对外部世界是隐藏的,只能在其定义的方法或作用域中创建和使用。
```java
public class OuterClass {
public void methodWithLocalInnerClass() {
int localVar = 5;
class LocalInnerClass {
public void display() {
System.out.println("Local variable: " + localVar);
}
}
LocalInnerClass inner = new LocalInnerClass();
inner.display();
}
}
// 使用局部内部类
public class Main {
public static void main(String[] args) {
OuterClass outer = new OuterClass();
outer.methodWithLocalInnerClass();
}
}
```
3. 匿名内部类:
匿名内部类是没有名字的内部类,用于实现一个接口或继承一个类,并且在创建对象时进行定义和实例化。通常在需要临时实现某个接口或继承某个类的情况下使用。
```java
public interface MyInterface {
void display();
}
// 使用匿名内部类
public class Main {
public static void main(String[] args) {
MyInterface obj = new MyInterface() {
@Override
public void display() {
System.out.println("Anonymous inner class");
}
};
obj.display();
}
}
```
4. 静态内部类:
静态内部类是定义在另一个类内部,并且被声明为静态的内部类。它与外部类实例无关,可以直接访问外部类的静态成员,但不能访问外部类的实例成员。
```java
public class OuterClass {
private static int outerStaticVariable = 5;
public static class StaticInnerClass {
public void display() {
System.out.println("Outer static variable: " + outerStaticVariable);
}
}
}
// 使用静态内部类
public class Main {
public static void main(String[] args) {
OuterClass.StaticInnerClass inner = new OuterClass.StaticInnerClass();
inner.display();
}
}
```
以上是对不同类型的内部类的简单示例。每种内部类都有其特定的应用场景和用途,可以根据实际需求选择合适的内部类类型来实现代码的设计和功能。
阅读全文