如果我有类A扩展JButton并实现ActionListener并执行某个默认操作 . 然后我有B类扩展A类,我希望它做同样的动作,加上其他东西 . 如何扩展A类的actionPerformed方法?
A类:
class AButton extends JButton implements ActionListener {
AButton () {
addActionListener(this);
}
@Override
public void actionPerformed (ActionEvent aEvent) {
methodA();
}
}
B级:
class BButton extends AButton {
BButton () {
super();
addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent aEvent) {
methodB();
}
});
}
}
3 回答
您可以覆盖methodA()而不是actionPerformed()调用
您可以在相同的
JButton
上添加多个ActionListener
,并且在单击按钮时将触发所有ActionListener
但是确保侦听器的顺序不是预定义的,也不应该是预定义的 .除非您需要覆盖现有功能,否则切勿扩展任何内置类 .
了解更多关于Favor Composition over inheritance Principle
如果你想以同样的方式做,那么试试这样的事情:
我认为这是不可能的 . 您不能继承匿名类 . 您应该编写一个实现ActionListener的操作处理程序,然后从第二个类的此处理程序扩展 .