为什么 AbstractAction 不实现 actionPerform()?



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

AbstractAction 是一个抽象类,因此它不必在接口上实现所有方法。 抽象类不能实例化,因此如果不创建抽象类的子类,就无法使用它们。 只有具体的类(即非抽象的)必须提供接口所有方法的实现。 如果你的子类 AbstractAction,你的子类必须实现 actionPerform(),或者它也必须是抽象的。

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

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

在抽象类的情况下不成立。只有具体的类应该为它扩展的超类(这将是抽象的)中的所有抽象方法以及它实现的接口中的所有方法提供实现。

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

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

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

允许

abstract类不完整。抽象类不需要实现接口或父抽象类指定的任何或所有方法。此外,抽象类可以声明任何子类都必须实现的新抽象方法。

使类抽象所付出的代价是它不能直接实例化。也就是说,必须扩展抽象类才能使用。

最新更新