首页 理论教育 Java语言程序设计:匿名内部类的使用

Java语言程序设计:匿名内部类的使用

时间:2023-10-18 理论教育 版权反馈
【摘要】:匿名内部类是一种特殊的内部类,适合用于创建那些只需要使用一次的类。匿名内部类简称匿名类,没有类名,故不能声明对象,但是可以创建对象。匿名类属于内部类,符合内部类的一切规则。第13行语句通过上转型对象调用匿名实现类中重写的父接口的方法。

Java语言程序设计:匿名内部类的使用

匿名内部类是一种特殊的内部类,适合用于创建那些只需要使用一次的类。匿名内部类简称匿名类,没有类名,故不能声明对象,但是可以创建对象。使用匿名类创建对象时,只能用关键字new 借助于超类或接口实现,不具有static和abstract修饰符,并且不能派生子类。匿名类分为:和类相关的匿名类、和接口相关的匿名类。

1.和类相关的匿名类

如果存在一个类,并没有声明该类的子类,但是又想使用子类创建一个对象,此时Java语言允许定义一个没有类的声明部分的子类类体,称为匿名类。它的功能等同于一个子类,但是由于不存在类名,所以只能创建对象,而不能声明对象。定义匿名类的格式如下:

匿名类可以继承父类的方法,也可以重写父类的方法。匿名类属于内部类,符合内部类的一切规则。

与类相关的匿名类的用法,代码如下:

上述代码的运行结果如下:

第2~4行代码定义了一个抽象类Animal,第3行代码定义了Animal类中的抽象方法cry。

第7~12行代码通过匿名类为抽象类的引用对象cat赋值,该匿名类是Animal的子类,并且在子类类体中重写了Animal类中的抽象方法。当把Animal的匿名子类的对象赋值给Animal的引用变量cat时,cat就变成了该匿名子类对象的上转型对象。

第13行语句通过上转型对象调用匿名子类中重写的父类的方法。(www.xing528.com)

2.和接口相关的匿名类

如果一个类实现了某个接口,那么Java语言允许使用该类创建一个匿名类,被创建后的匿名类只有类体,没有类的声明。

与接口相关的匿名类的用法示例代码如下:

上述代码的运行结果如下:

第2~4行代码定义了一个接口Animal,第3行代码定义了接口中的方法cry,因为接口中的所有方法都是抽象的,故cry方法也是抽象的。

第7~11行代码通过匿名类为接口的引用变量cat赋值,该匿名类是接口Animal的实现类,并且在实现类类体中重写了接口Animal中的抽象方法。当把Animal的匿名实现类的对象赋值给Animal接口的引用变量cat时,cat就变成了该匿名实现类对象的上转型对象。

第13行语句通过上转型对象调用匿名实现类中重写的父接口的方法。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈