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