java - 抽象类的对象是在使用匿名内部类时创建的吗?

标签 java

理解匿名内部类有点困难

这是我的代码。我知道 WindowAdapter 类是一个抽象类,那么“new WindowAdapter()”这行是什么意思?我们是否创建了一个 WindowAdapter 类的对象,它是一个抽象类。Confused!!!

Class Myframe extends Frame
{
    public static void main(String args[])
    {
        Myframe f=new Myframe();
        f.setVisible(true);
        f.setSize(300,300);
        f.addWindowListener(new WindowAdapter()
        {
            public void windowClosing(WindowEvent e)
            {
                System.exit(0);
            }
        });
    }
}

最佳答案

它正在创建一个匿名类的对象,该类扩展了 WindowAdapter 类,而无需编写代码来子类化它。

来自Java Tutorials :

匿名类使您的代码更加简洁。它们使您能够同时声明和实例化一个类。它们就像本地类,只是没有名称。

这是创建子类对象的快捷方式,无需显式编写扩展 WindowAdapter 的单独类。要点是您需要从方法代码内部获取该对象,因此您永远不会引用到其他地方,因此您不需要为它们创建单独的类。

关于java - 抽象类的对象是在使用匿名内部类时创建的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16789952/

相关文章:

java - Activity 中的构造函数未定义

java - 这是声明 arraylist 的最佳方式

java - 如何在 Java 中比较字符串?

java - 测试不扩展任何 Spring Data Repository 的存储库

java - 在多行 JTextField 中更改光标垂直对齐方式

java - 无法在 java 中正确覆盖 keyPressed(KeyEvent)

java - 交易后刷新实体

java - 解析 Xml 仅返回 1 项

java - 在 String 字面值和 new String 对象之间创建了多少个对象

java - 不使用递归且使用堆栈 Java 遍历文件树