public class Main {
public static void main(String[] args) {
Main m = new Main() {
@Override
public void test(String s) {
System.out.println("重写" + s);
}
};
m.test("hello"); // 输出:重写hello
}
public void test(String s) {
System.out.println(s);
}
}
匿名内部类的 “匿名” 特性,本质是指类本身没有显式声明的类名,而非对象没有引用变量
- 类本身没有名字:
new Main() {...}
部分直接定义了一个继承自Main
的子类,但这个子类没有独立的类名(比如MyChildClass
这样的名字)。 - 对象有引用变量:变量
m
是这个匿名子类的实例的引用,但类本身仍然是匿名的。