Java中定义了几种类型的匿名内部类?
一个匿名内部类是声明一个内部类没有任何类名的。换句话说,一个无名的内部类称为匿名内部类。由于它没有名称,因此它不能具有构造函数, 因为我们知道构造函数名称与类名称相同。
我们可以定义一个匿名内部类,并一步一步使用new 运算符创建其对象。
语法
new(argument-list){
//匿名类正文
}Java匿名内部类的类型
扩展类的匿名内部类
实现接口的匿名内部类
匿名内部类作为参数
扩展类的匿名内部类
在这里,新 关键字用于创建匿名内部类的对象,该对象具有父类类型的引用。
示例
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
实现接口的匿名内部类
在这里,新 关键字用于创建匿名内部类的对象,该对象具有接口类型的引用。
示例
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
热门推荐
1 训练狗狗憋尿
2 狗狗追踪训练
3 狗狗训练要多少钱
5 深圳狗狗训练
6 训练狗狗唤回
7 狗狗叫怎么训练
8 狗狗训练班
10 狗狗社会化训练
11 狗狗叫回训练
12 广州狗狗训练学校
13 狗狗训练躺下
14 狗狗随行训练
15 训练狗狗巡回
16 狗狗要怎么训练
17 狗狗喂食训练
18 训练狗狗躺下