上一节我们学习了内部类,这一节我们来学习匿名类。那什么叫做匿名类呢?顾名思义,匿名类就是不能有名字的类,它们不能被引用,只能在创建时用new语句来声明它们。
使用匿名内部类我们必须要继承一个父类或者实现一个接口。
需要注意的是:
1)匿名内部类中是不能定义构造函数的。
2)匿名内部类中不能存在任何的静态成员变量和静态方法。
3)匿名内部类为局部内部类,所以局部内部类的所有限制同样对匿名内部类生效。
匿名类语法格式如下:
class outerClass { // 定义一个匿名类 object1 = new Type(parameterList) { // 匿名类代码 }; }
注意:因为匿名类是表达式形式定义的,所以末尾以分号;来结束。
1. 匿名类继承一个父类
例如:
class Dotcpp { public void display() { System.out.println("在Dotcpp类内部"); } } class AnonymousDemo { public void createClass() { //创建的匿名类继承了Dotcpp类 Dotcpp d1 = new Dotcpp() { public void display() { System.out.println("在匿名类内部"); } }; d1.display(); } } class Main { public static void main(String[] args) { AnonymousDemo an = new AnonymousDemo(); an.createClass(); } }
运行结果如下:
在匿名类内部
2. 匿名类实现一个接口
例如:
interface Dotcpp { public void display(); } class AnonymousDemo { public void createClass() { //创建的匿名类实现了Dotcpp接口 Dotcpp d1 = new Dotcpp() { public void display() { System.out.println("在匿名类内部"); } }; d1.display(); } } class Main { public static void main(String[] args) { AnonymousDemo an = new AnonymousDemo(); an.createClass(); } }
运行结果如下:
在匿名类内部
好了,大家可以上机实验,消化吸收本节内容。
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程