上一节我们学习了内部类,这一节我们来学习匿名类。那什么叫做匿名类呢?顾名思义,匿名类就是不能有名字的类,它们不能被引用,只能在创建时用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、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程