下面的代码中,为什么抽象方法可以用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(){ ...}
------解决方案--------------------
这属于匿名内部类。