我们可以为接口和抽象类创建对象吗?

时间:2011-07-06 09:59:49

标签: java inner-classes anonymous-class

f.addMouseMotionListener(new MouseAdapter() {
    public void mouseDragged(MouseEvent e) 
    {
        String s="Mouse dragging :X = "+e.getX()+" Y= "+e.getY();
        tf.setText(s);
    }
    });

我读到我们无法实例化抽象类的对象......但是我们正在创建 new MouseAdapter() ..有人可以解释这些匿名课程是如何完成的。谢谢你。

2 个答案:

答案 0 :(得分:3)

您没有创建MouseAdapter的实例,而是创建一个继承自MouseAdapter的匿名类的实例。

更详细地说,这可以写成:

class Goo extends MouseAdapter { public void mouseDragged(){...} };

f.addMouseMotionListener(new Goo());

答案 1 :(得分:0)

你没有看到它并不意味着它不会发生。只需从代码中,您可以使用新的MouseAdapter()来构造对象。但是,如果您尝试读取.class文件中的内容,您会发现内部类具有名称,     通常的情况是,

class MouseAdapter$1 extends MouseAdapter

直到这个,你应该清楚一切。 :)