在理解匿名内部课程时遇到一些麻烦
这是我的代码。我知道WindowAdapter类是一个Abstract类,那么“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);
}
});
}
}
答案 0 :(得分:3)
它正在创建一个匿名类的对象,它扩展WindowAdapter
类而不编写代码来将其子类化。
匿名类使您可以使代码更简洁。它们使您能够同时声明和实例化一个类。它们就像本地类,除了它们没有名称。
这是创建子类对象的快捷方式,而无需显式编写扩展WindowAdapter
的单独类。重点是您需要方法代码中的对象,因此您永远不会在其他地方引用它们,所以你不需要为它们创建一个单独的类。
答案 1 :(得分:1)
由于您使用System.exit(0)
实现了抽象方法,因此它不再抽象答案 2 :(得分:0)
它在运行时创建WindowAdapter
的实现,实现包含您提供的代码。它被称为anonymous
,因为它没有名称,因此您无法按名称引用它。当它执行一次时,它不能再次执行。
答案 3 :(得分:0)
答案 4 :(得分:0)
不,你不能直接创建抽象类的对象,但你可以使用匿名内部类来做到这一点,你也可以在匿名类中实现自己的方法。 请参阅 - http://www.easybix.com/can-create-object-abstract-class/