类AbstractAction
实现接口Action
,但在Action
,有一个方法actionPerformed(ActionEvent e)
从接口继承ActionListener
我知道类实现一个接口必须提供的方法,所有实现该接口
但是我发现没有执行actionPerformed(ActionEvent e)
在AbstractAction
,为什么?为什么AbstractAction没有实现actionPerformed()?
1
A
回答
6
AbstractAction是一个抽象类,所以它不必实现接口上的所有方法。抽象类无法实例化,因此如果不创建它的子类,就不能使用它们。只有具体的类(即非抽象的)必须提供接口的所有方法的实现。如果你继承AbstractAction,你的子类将不得不实现actionPerformed(),否则它也必须是抽象的。
现在这些是规则,但AbstractAction实现actionPerformed()是没有意义的,因为它不可能提供有用的实现。每个子类都必须重写它的定义,这使得它成为抽象标记的理想选择。
5
我知道类实现一个接口必须提供的方法,所有实现该接口
不是真的在抽象类的情况。只有具体类应该为超类中的所有抽象方法(它将是抽象的)提供实现,并且实现它所实现的接口中的所有方法。
但是我发现AbstractAction中没有actionPerformed(ActionEvent e)的实现,为什么?
他们希望在该类中保持抽象,以确保扩展该类的任何具体实现都为该方法提供了实现。
此外,它会执行什么样的默认操作(可能是空的或没有)?
1
abstract
类允许不完整。抽象类不需要实现由接口或父抽象类指定的任何或全部方法。此外,抽象类可以声明任何子类必须实现的新抽象方法。
制作类抽象所付出的代价是它可能不会被直接实例化。也就是说,抽象类必须扩展才能使用。
相关问题
- 1. 为什么JsArrayString没有实现迭代?
- 2. 为什么LinkedHashMap没有实现SortedMap?
- 3. 为什么ArrayList没有实现队列?
- 4. WhereSelectArrayIterator为什么没有实现ICollection?
- 5. 为什么AbstractCollection没有实现equals()?
- 6. 为什么java.util.TreeMap.KeySet没有实现equals?
- 7. 什么时候和为什么没有实现(java.lang.reflect.InvocationTargetException)发生?
- 8. AbstractAction作为WindowListener
- 9. 为什么没有错误为实现添加未实现方法(Eclipse)
- 10. ActionPerformed与addActionListener()和Netbeans生成的ActionPerformed之间有什么区别?
- 11. AngularUI:为什么模态没有作为指令实现?
- 12. 为什么我得到协议Enumerable没有为#Ecto.Query实现?
- 13. 为什么C#字典没有实现所有的IDictionary?
- 14. 为什么我没有看到IDisposable实现并发的任何实现?
- 15. 为什么有不同的Ruby实现?
- 16. 什么发送到actionPerformed?
- 17. 为什么没有TcpClient.Connect的无参数实现?
- 18. 为什么Python没有本地链接列表实现?
- 19. 为什么glibc没有使用fork来实现sys_fork?
- 20. 为什么没有发现这个谓词的实例?
- 21. 为什么StructuralObject的方法没有实现?
- 22. 为什么我得到“跨数据库引用没有实现”?
- 23. iOS - 为什么没有实现下拉菜单
- 24. 为什么没有用户代理实现对视频内容
- 25. 为什么scala Map没有实现无法应用?
- 26. 为什么在ember.js中没有实现单选按钮功能?
- 27. 为什么MySQL(和MsSQL)没有实现ANSI_NULLS?
- 28. 在Scala中,为什么没有`Future.onComplete`的实现?
- 29. 在PySpark数据框中,为什么__setitem__没有完全实现?
- 30. 为什么在PowerShell中没有实现“<”输入重定向?