Dotcpp  >  编程教程  >  Java内部类与异常类  >  Java匿名类

Java匿名类

点击打开在线编译器,边学边练

上一节我们学习了内部类,这一节我们来学习匿名类。那什么叫做匿名类呢?顾名思义,匿名类就是不能有名字的类,它们不能被引用,只能在创建时用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();
    }
}


运行结果如下:

在匿名类内部


好了,大家可以上机实验,消化吸收本节内容。



本文固定URL:https://www.dotcpp.com/course/800

上一课:

Java内部类

下一课:

Java异常类

Java教程
第一章 Java入门
第二章 Java运算符和表达式
第三章 Java流程控制
第四章 Java类和对象
第五章 Java子类与继承
第六章 Java接口与实现
第七章 Java内部类与异常类
第八章 Java常用实用类
第九章 Java输入输出流
第十章 Java数组
Dotcpp在线编译      (登录可减少运行等待时间)