匿名内部类是Java中一种特殊的类定义方式,它没有类名,而是将类定义作为表达式的一部分。匿名内部类常常用于定义一个只需要使用一次的类。
在Java中,匿名内部类可以是接口的实现类、抽象类的实现类或者普通类的子类。它通常会隐式地继承一个类或实现一个接口,同时还可以拥有自己的方法和属性。匿名内部类的定义方式与普通类的定义方式相似,但使用了不同的语法。
匿名内部类的语法格式如下所示:
new 父类构造器|接口(){
// 匿名内部类的类体部分
};
其中,父类/接口是匿名内部类要继承或实现的类或接口。在类体部分中,可以定义匿名内部类的方法和属性,并直接使用外部类的成员变量和方法。
// 示例1:匿名内部类实现接口
public class AnonymousDemo {
interface Greeting {
void sayHello();
}
public static void main(String[] args) {
Greeting greeting = new Greeting() {
public void sayHello() {
System.out.println("Hello world!");
}
};
greeting.sayHello();
}
}
// 示例2:匿名内部类继承父类
public class AnonymousDemo {
static class Parent {
void doSomething() {
System.out.println("Parent.doSomething");
}
}
public static void main(String[] args) {
Parent parent = new Parent() {
void doSomething() {
super.doSomething();
System.out.println("Anonymous.doSomething");
}
};
parent.doSomething();
}
}
以上两个示例分别展示了匿名内部类实现接口和继承父类的场景。在示例1中,定义了一个接口Greeting,然后使用匿名内部类实现该接口,并创建一个实例。在示例2中,定义了一个类Parent,并定义了抽象方法doSomething(),然后使用匿名内部类继承Parent类,并重写doSomething()方法。
需要注意的是,匿名内部类只能够使用一次。由于匿名内部类没有类名,因此在编译之后会生成一个随机的类名,如果需要多次使用,建议使用普通类进行定义。
总之,匿名内部类是Java中一种特殊的类定义方式,它没有类名,是将类定义作为表达式的一部分。它通常用于定义一些只需要使用一次的类,能够实现接口和继承类,并且可以拥有自己的方法和属性。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java中的匿名内部类是什么? - Python技术站