Java 中定义了多少种类型的匿名内部类?
javaobject oriented programmingprogramming更新于 2025/6/10 18:52:17
匿名内部类是一种声明时没有任何类名的内部类。换句话说,无名内部类称为匿名内部类。由于它没有名称,因此它不能有构造函数,因为我们知道构造函数名称与类名相同。
我们可以定义一个匿名内部类并使用new运算符创建其对象,只需一步即可。
语法
new(argument-list){
// 匿名类主体
}
Java 中匿名内部类的类型
- 扩展类的匿名内部类
- 实现接口的匿名内部类
- 作为参数的匿名内部类
扩展类的匿名内部类
此处使用 new 关键字创建 匿名内部类 的对象,该对象具有 父类类型的引用。
示例
class Car {
public void engineType() {
System.out.println("Turbo Engine");
}
}
public class AnonymousClassDemo {
public static void main(String args[]) {
Car c1 = new Car();
c1.engineType();
Car c2 = new Car() {
@Override
public void engineType() {
System.out.println("V2 Engine");
}
};
c2.engineType();
}
}
输出
Turbo Engine V2 Engine
实现接口的匿名内部类
此处使用 new 关键字创建具有 接口类型引用 的 匿名内部类 对象。
示例
interface Software {
public void develop();
}
public class AnonymousClassDemo1 {
public static void main(String args[]) {
Software s = new Software() {
@Override
public void develop() {
System.out.println("Software Developed in Java");
}
};
s.develop();
System.out.println(s.getClass().getName());
}
}
输出
Software Developed in Java AnonymousClassDemo1$1
匿名内部类作为参数
我们可以使用匿名内部类作为参数,以便可以 将其传递给方法或构造函数。
示例
abstract class Engine {
public abstract void engineType();
}
class Vehicle {
public void transport(Engine e) {
e.engineType();
}
}
public class AnonymousInnerClassDemo2 {
public static void main(String args[]) {
Vehicle v = new Vehicle();
v.transport(new Engine() {
@Override
public void engineType() {
System.out.println("Turbo Engine");
}
});
}
}
输出
Turbo Engine
相关文章
有用资源
java 参考教程 - 该教程包含有关 java 的更多信息:https://www.cainiaomax.com/java/

