在Java编程语言中,内部类是一种嵌套在另一个类中的类。内部类可以访问外部类的所有成员,包括私有成员。内部类主要有四种类型:成员内部类、局部内部类、匿名内部类和静态内部类。下面将详细介绍这四种内部类创建实例的常见方法。
1. 成员内部类
成员内部类是定义在外部类的非静态成员内部的一种内部类。要创建成员内部类的实例,首先需要创建外部类的实例,然后通过外部类实例来创建成员内部类的实例。
public class OuterClass {
private int outerValue = 10;
class InnerClass {
private int innerValue = 20;
public void display() {
System.out.println("Outer Value: " + outerValue + ", Inner Value: " + innerValue);
}
}
public void createInnerClass() {
InnerClass inner = new InnerClass();
inner.display();
}
}
public class Main {
public static void main(String[] args) {
OuterClass outer = new OuterClass();
outer.createInnerClass();
}
}
2. 局部内部类
局部内部类是定义在方法、构造函数或代码块中的内部类。要创建局部内部类的实例,只需在需要的地方创建即可。
public class OuterClass {
public void createLocalInnerClass() {
class LocalInnerClass {
private int localValue = 30;
public void display() {
System.out.println("Local Value: " + localValue);
}
}
LocalInnerClass local = new LocalInnerClass();
local.display();
}
}
public class Main {
public static void main(String[] args) {
OuterClass outer = new OuterClass();
outer.createLocalInnerClass();
}
}
3. 匿名内部类
匿名内部类是一种没有名字的内部类,通常用于实现一个接口或继承一个类。要创建匿名内部类的实例,只需在创建对象的地方直接实现接口或继承类,并重写其方法。
public class OuterClass {
public void createAnonymousInnerClass() {
Runnable runnable = new Runnable() {
@Override
public void run() {
System.out.println("Running...");
}
};
new Thread(runnable).start();
}
}
public class Main {
public static void main(String[] args) {
OuterClass outer = new OuterClass();
outer.createAnonymousInnerClass();
}
}
4. 静态内部类
静态内部类是一种定义在外部类静态成员内部的内部类。要创建静态内部类的实例,无需创建外部类的实例。
public class OuterClass {
private static int staticValue = 40;
static class StaticInnerClass {
private int innerValue = 50;
public void display() {
System.out.println("Static Value: " + staticValue + ", Inner Value: " + innerValue);
}
}
public static void createStaticInnerClass() {
StaticInnerClass staticInner = new StaticInnerClass();
staticInner.display();
}
}
public class Main {
public static void main(String[] args) {
OuterClass.createStaticInnerClass();
}
}
以上就是Java中内部类创建实例的常见方法。希望这些信息能帮助你更好地理解和使用内部类。
