上一节我们学习了内部类,这一节我们来学习匿名类。那什么叫做匿名类呢?顾名思义,匿名类就是不能有名字的类,它们不能被引用,只能在创建时用new语句来声明它们。
使用匿名内部类我们必须要继承一个父类或者实现一个接口。
需要注意的是:
1)匿名内部类中是不能定义构造函数的。
2)匿名内部类中不能存在任何的静态成员变量和静态方法。
3)匿名内部类为局部内部类,所以局部内部类的所有限制同样对匿名内部类生效。
匿名类语法格式如下:
class outerClass { // 定义一个匿名类 object1 = new Type(parameterList) { // 匿名类代码 }; }
注意:因为匿名类是表达式形式定义的,所以末尾以分号;来结束。
例如:
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(); } }
运行结果如下:
在匿名类内部
例如:
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(); } }
运行结果如下:
在匿名类内部
好了,大家可以上机实验,消化吸收本节内容。
本文固定URL:https://www.dotcpp.com/course/800