为什么AbstractAction没有实现actionPerformed()?

Bin*_*n_Z 1 java awt actionlistener abstract-action

AbstractAction实现接口Action,但是Action,有一个actionPerformed(ActionEvent e)继承自接口的方法 ActionListener
我知道类实现接口必须提供该接口中方法的所有实现
但是我发现没有实现actionPerformed(ActionEvent e)in AbstractAction,为什么?

chu*_*ubs 6

AbstractAction是一个抽象类,因此它不必在接口上实现所有方法.抽象类无法实例化,因此在不创建它的子类的情况下不能使用它们.只有具体的类(即非抽象类)必须提供接口的所有方法的实现.如果你继承AbstractAction,你的子类必须实现actionPerformed(),否则它也必须是抽象的.

现在这些是规则,但是AbstractAction实现actionPerformed()没有意义,因为它不可能提供有用的实现.每个子类都必须覆盖它的定义,这使得它成为被标记为抽象的良好候选者.


Bhe*_*ung 5

我知道该类实现的接口必须提供该接口中方法的所有实现

在抽象类的情况下不正确.只有具体的类才能为超类中的所有抽象方法(它们都是抽象的)提供实现,并扩展它实现的接口中的所有方法.

但是我发现在AbstractAction中没有actionPerformed(ActionEvent e)的实现,为什么?

他们希望在该类中保持抽象,以确保扩展此类的任何具体都为该方法提供了实现.

此外,它会执行什么默认操作(可能是空的或什么都没有)?