日期:2014-05-20  浏览次数:20735 次

JAVA问题求解,谢谢了
下面的代码中,为什么抽象方法可以用new来实现了?
import java.awt.*;
import java.awt.event.*;

import javax.swing.*;
public class eventListener3 extends JFrame
{
JLabel jl;
JButton jb;
int i;
public eventListener3()
{
jb=new JButton("统计");
jl=new JLabel(" ");

jb.addActionListener(new hand() {
public void actionPerformed(ActionEvent arg0){
jl.setText("" + i);
i++;
}
}

);
this.add(jb);
this.add(jl);


this.setTitle("Frame窗体");
this.setSize(300,300);
this.setLayout(new FlowLayout());
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
eventListener3 fe=new eventListener3();

}

}

abstract class hand implements ActionListener
{

@Override
public abstract void actionPerformed(ActionEvent arg0);

}


------解决方案--------------------
这个就是相当于---新建一个hand的匿名子类,实现hand的抽象方法。
相当于:
Java code

new HandChild extends hand()
{
    ...
}

------解决方案--------------------
这属于匿名内部类。