我在理解何时在重写方法中调用超级时遇到问题。根据这篇文章,它应该在底部,但我的同事不同意。
你对这个话题有什么看法?
答案是取决于。实际的决定取决于您在被覆盖的方法中所做的事情以及当您覆盖特定方法时基类所期望的行为。
您要覆盖的方法的文档应提供覆盖时预期行为的详细信息。我个人的偏好super
首先打电话。
这取决于您覆盖的方法正在做什么。如果您在谈论构造函数,则必须先调用super
以确保正确构造超类,然后再设置其状态。如果是另一种方法,则调用的位置取决于您是在转换输入参数(super
需要在此之后)还是返回值(super
在此之前)。
您链接到的“帖子”是自动代码审计工具的文档,而不是建议,它有选项告诉它子类应该super
在其方法的开头或结尾调用。
我的意见是规则应该符合你的编码标准。如果你不能同意,这是一个好兆头,不清楚你是否需要为你的项目检查这个。
就我个人而言,除非有很好的理由,否则我总是在一开始就打超级电话。