📅  最后修改于: 2023-12-03 15:32:02.680000             🧑  作者: Mango
Java内部类是一种定义在其他类(外部类)内部的类。它的特点是可以访问外部类的私有变量和方法,并且可以隐藏实现细节,提高代码的可读性和可维护性。本文将介绍Java内部类的概念、分类、语法和使用场景。
Java内部类可以分为四类:
public class OuterClass {
private int outerField;
public class InnerClass {
public void innerMethod() {
//可以访问外部类的私有变量
System.out.println("Outer field value: " + outerField);
}
}
}
public class OuterClass {
public void someMethod() {
class InnerClass {
public void innerMethod() {
System.out.println("This is a local inner class.");
}
}
InnerClass inner = new InnerClass();
inner.innerMethod();
}
}
public interface MyInterface {
void myMethod();
}
public class OuterClass {
public void someMethod() {
MyInterface inner = new MyInterface() {
public void myMethod() {
System.out.println("This is an anonymous inner class.");
}
};
inner.myMethod();
}
}
public class OuterClass {
private static int outerField;
public static class InnerClass {
public void innerMethod() {
//可以访问外部类的静态变量
System.out.println("Outer field value: " + outerField);
}
}
}
public class Queue {
private Node head;
private Node tail;
private class Node {
private Object item;
private Node next;
}
public void enqueue(Object item) {
Node node = new Node();
node.item = item;
if (head == null) {
head = node;
tail = node;
} else {
tail.next = node;
tail = node;
}
}
}
在上面的Queue类中,Node类用于封装节点的实现细节,而不必暴露给外部类的用户。
public interface OnClickListener {
void onClick();
}
public class Button {
public void setOnClickListener(OnClickListener listener) {
//省略代码
}
}
public class MainActivity {
private Button button;
protected void onCreate(Bundle savedInstanceState) {
button = findViewById(R.id.button);
button.setOnClickListener(new OnClickListener() {
public void onClick() {
Toast.makeText(MainActivity.this, "Button is clicked.", Toast.LENGTH_SHORT).show();
}
});
}
}
在上述代码中,MainActivity类实现了OnClickListener接口的方法,将其作为匿名内部类传递给Button类的setOnClickListener()方法,从而实现了事件回调的功能。
Java内部类是一种非常有用的语言特性,可以帮助我们封装实现细节、实现接口回调等功能,在代码中广泛应用。可以根据实际需要选择合适的类型,并注意其作用域和访问权限,以便发挥出最大的效益。