Java 中可以实现一个类中包含另外一个类,且不需要提供任何的类名直接实例化。
主要是用于在我们需要的时候创建一个对象来执行特定的任务,可以使代码更加简洁。
匿名类是不能有名字的类,它们不能被引用,只能在创建时用 new 语句来声明它们。
匿名类语法格式:
class outerClass {
// 定义一个匿名类
object1 = new Type(parameterList) {
// 匿名类代码
};
}
以上的代码创建了一个匿名类对象 object1,匿名类是表达式形式定义的,所以末尾以分号 ; 来结束。
匿名类通常继承一个父类或实现一个接口。
匿名类继承一个父类
以下实例中,创建了 Test1 类,该类只有一个方法 display(),Demo 类继承了 Polygon 类并重写了 Test1 类的 display() 方法
实例:
class Test1 {
public void display() {
System.out.println("在 test 类内部");
}
}
class Demo {
public void createClass() {
// 创建的匿名类继承了 Polygon 类
Test1 t1 = new Test1() {
public void display() {
System.out.println("在匿名类内部。");
}
};
t1.display();
}
}
class Main {
public static void main(String[] args) {
Demo demo = new Demo();
demo.createClass();
}
}
执行以上代码,匿名类的对象 t1 会被创建,该对象会调用匿名类的 display() 方法,输出结果为:
在匿名类内部。
匿名类实现一个接口
以下实例创建的匿名类实现了 Test1 接口:
实例
interface Test1 {
public void display();
}
class Demo {
public void createClass() {
// 匿名类实现一个接口
Test1 t1 = new Test1() {
public void display() {
System.out.println("在匿名类内部。");
}
};
t1.display();
}
}
class Main {
public static void main(String[] args) {
Demo an = new Demo();
an.createClass();
}
}
输出结果为:
在匿名类内部。