Java 匿名类
Java 中的匿名类是一个内部类,它在声明时根本没有任何类名。换句话说,Java中的无名内部类称为匿名内部类。由于它没有名称,因此它不能有构造函数,因为我们知道构造函数名称与类名称相同。
Java 匿名内部类的使用
当您想要创建一个仅用于特定目的一次的简单类时,可以使用匿名内部类。 例如,实现接口或扩展类。
在Java中定义匿名类
您可以定义一个匿名内部类,并同时使用 new 运算符一步创建其对象。
语法
匿名嵌套类的语法如下 -
new(argument-list){
// 匿名类主体
}
Java 中匿名内部类的类型
匿名内部类扩展类
实现接口的匿名内部类
作为参数的匿名内部类
1.扩展类的匿名内部类
在 Java 中,您可以使用匿名内部类来扩展类。
示例:扩展类的匿名内部类
在下面的示例中,我们使用 new 关键字创建具有父类类型引用的匿名内部类的对象。
package com.yxjc123;
class Car {
public void engineType() {
System.out.println("Turbo Engine");
}
}
public class Tester {
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
2.实现接口的匿名内部类
在Java中可以使用匿名内部类来实现接口。
示例:实现接口的匿名内部类
如下例如,我们使用 new 关键字来创建具有接口类型引用的匿名内部类的对象。
package com.yxjc123;
interface Software {
public void develop();
}
public class Tester {
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
com.yxjc123.Tester$1
3。匿名内部类作为参数
我们可以使用匿名内部类作为参数,以便将其传递给方法或构造函数。
示例:匿名内部类作为参数
在下面的示例中,我们将匿名内部类作为参数传递给一个方法。
package com.yxjc123;
abstract class Engine {
public abstract void engineType();
}
class Vehicle {
public void transport(Engine e) {
e.engineType();
}
}
public class Tester {
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