Java中的局部内部类是一个定义在方法或作用域内部的类,它只能在它所在的方法或作用域内使用,并且不能声明为public、protected和private等访问修饰符。局部内部类与成员内部类不同,它是嵌套在方法中的内部类,因此它只能访问它所在的方法中的final局部变量,而不能访问非final的局部变量。
下面我们来看两个实例来更具体的理解局部内部类:
示例1:使用局部内部类实现接口方法
public interface Calculator {
public int calculate(int a, int b);
}
public class MathTest {
public void test() {
class Adder implements Calculator {
public int calculate(int a, int b) {
return a + b;
}
}
Adder adder = new Adder();
System.out.println(adder.calculate(2, 3));
}
public static void main(String[] args) {
MathTest mathTest = new MathTest();
mathTest.test(); // 输出:5
}
}
在上面的示例中,我们实现了一个接口Calculator,然后在test方法中定义了一个Adder局部内部类,它实现了Calculator接口的calculate方法,最后在test方法中创建一个Adder对象,调用calculate方法并输出结果。
示例2:使用匿名局部内部类实现Runnable接口
public class AnonymousClassTest {
public static void main(String[] args) {
Thread t = new Thread(new Runnable() {
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println("Hello World");
}
}
});
t.start(); // 输出:Hello World * 10
}
}
在上面的示例中,我们使用匿名局部内部类实现了Runnable接口,并创建了一个Thread对象,并传入一个Runnable对象作为参数。在匿名局部内部类中,我们实现了Runnable接口的run方法,并在其中通过循环输出了10次"Hello World"。
总结:局部内部类在Java中是一个定义在方法或作用域内部的类,它实现了定义的接口或者继承了指定的父类。局部内部类不能使用public访问修饰符,只能在它所在的方法或作用域内使用。实际上,它可以在任何位置创建,只要它是在使用之前声明即可。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java中的局部内部类是什么? - Python技术站