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

Java 抽象类的对象是在使用匿名内部类时创建的吗?,java,Java,理解匿名内部类有点困难 这是我的代码。我知道WindowAdapter类是一个抽象类,那么“new WindowAdapter()”一行是什么意思?我们正在创建WindowAdapter类的对象,它是一个抽象类。困惑 Class Myframe extends Frame { public static void main(String args[]) { Myframe f=new Myframe(); f.setVisible(true);

理解匿名内部类有点困难

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

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
类,而无需编写代码将其子类化

从:

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


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

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

从:

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


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

它不再是抽象的,因为您使用System.exit(0)实现了抽象方法。

它不再是抽象的,因为您使用System.exit(0)实现了抽象方法

它在运行时创建
WindowAdapter
的实现,该实现由您提供的代码组成。它被称为
匿名
,因为它没有名字,所以不能通过名字来引用它。当它执行一次时,就不能再执行了。

它在运行时创建了一个
WindowAdapter
的实现,该实现由您提供的代码组成。它被称为
匿名
,因为它没有名字,所以不能通过名字来引用它。当它执行一次时,就不能再执行了。

您正在对
WindowAdapter
类进行子类化,同时提供一个实现并实例化它。这就是这里基本上发生的事情

这称为匿名内部类


正如其他人在这里所建议的,包含了关于这一点的出色解释。

您正在子类化
WindowAdapter
类,同时提供一个实现并实例化它。这就是这里基本上发生的事情

这称为匿名内部类


正如其他人在这里所建议的,其中包含了关于这一点的极好的解释。

不,您不能直接创建抽象类的对象,但您可以使用匿名内部类来实现这一点,您还可以在匿名类中实现自己的方法。
请参阅-

否,您不能直接创建抽象类的对象,但您可以使用匿名内部类来完成此操作,并且您还可以在匿名类中实现自己的方法。
请参阅-

那么,你是说有一个没有名字的类正在扩展WindowAdapter,通过使用“new WindowAdapter()”,我们实际上正在创建匿名类的对象rite?也许值得注意的是,
xxxaAdapter
类为您提供了一种实现接口“部分”的简便方法(在本例中,
WindowListener
)而不必实现所有方法-其他方法(
windowOpened
WindowIconnified
,等等)什么都不做。那么,您是说有一个没有名称的类正在扩展WindowAdapter并使用“new WindowAdapter()”吗,我们实际上是在创建该匿名类的对象rite?也许还值得注意的是,
XxxAdapter
类为您提供了一种简便的方法来实现接口的“部分”(在本例中为
WindowListener
),而不必实现所有方法-其他方法(
windowOpened
windowIconified
,等等)什么都不做。