Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在没有';我什么都不能延伸?_Java_Inheritance - Fatal编程技术网

Java 在没有';我什么都不能延伸?

Java 在没有';我什么都不能延伸?,java,inheritance,Java,Inheritance,我经常看到人们在一个不显式扩展任何内容的类中显式调用super() public class Foo { public Foo() { super(); //do other constructor stuff } } 现在我知道这是完全合法的,如果省略,调用将由编译器添加,但我仍然认为这是不好的做法。每当我看到这一点,我都想知道程序员是否对继承有一些误解,以及所有类都隐式扩展了Object 我是否应该将此添加到我们的编码标准/最佳实践中,当我看到团队中的其他开发

我经常看到人们在一个不显式扩展任何内容的类中显式调用
super()

public class Foo
{
  public Foo()
  {
    super();

    //do other constructor stuff
  }
}
现在我知道这是完全合法的,如果省略,调用将由编译器添加,但我仍然认为这是不好的做法。每当我看到这一点,我都想知道程序员是否对继承有一些误解,以及所有类都隐式扩展了
Object


我是否应该将此添加到我们的编码标准/最佳实践中,当我看到团队中的其他开发人员这样做时,我是否应该让他们参与进来?这是我个人的bug,但我不知道我是不是太挑剔了。

它会被隐式调用,所以不需要这样做

添加不需要的代码总是一种不好的做法。这会降低代码的可读性,因为您需要停下来开始思考为什么要添加这行代码,以及它是否确实存在的原因。

需要指出的是:

  • 调用
    super()
    是完全没有意义的,不管类是否继承任何内容;只有在不调用基类的隐式构造函数的情况下,才有意义
  • 问题应该是“做一些完全没有意义的坏事吗?”。答案显而易见——是的
虽然我是一个追求一致性的人,但我也反对对每一点风格进行微观管理。拥有一大堆编码约定,特别是当其中一些似乎是武断的时候,是阻碍人们遵循它们的一部分。我认为编码准则应该简化为最有价值的实践,以提高灵活性。通过强制执行此实践,可读性、可维护性、性能等有多大的改进


虽然我个人的做法是在这种情况下不要调用
super()
,但这还不够严重,我会将其包括在编码指南中,或者称之为审查其他程序员代码时的缺陷。然而,我仍然会在代码评审中提到它并讨论它(不是作为一个缺陷,只是作为一个风格问题),试图说服更多的工程师不要使用该调用。

默认情况下,自动代码生成器经常添加显式超级构造函数调用,因此这并不总是程序员的坏习惯。或者可能是让生成的代码保持原样的错误做法

Eclipse特别生成这个超级调用(从超类生成构造函数),然而,我在其他IDE上没有太多经验。(在注释中写下你的经验。)我另一个“最喜欢”的默认生成代码是接口的方法声明:“公共抽象”,它是完全冗余的。

super()调用由JDeveloper隐式添加。
当你自己写一门课的时候,没有必要也没有用处。我不是问我是否需要给它打电话,我是问它是否是一种坏习惯。+1-不知道谁否决了你,但我认为你的答案是正确的。@Qwerky
如果(true==true){//是的}
你会这么做吗?我不是被否决的选民,但我觉得OP在他的问题中已经指出了这个信息。问题并不是问它是否必要(OP已经说明了它的隐含含义:
,如果省略,调用将由编译器添加
)。问题是它是否重要到足以采取行动:添加编码指南并告诉其他开发人员这是一个缺陷。我喜欢这个答案,代码审查似乎是解决这个问题的最佳方式,并澄清程序员可能存在的误解。这并不能真正回答问题,更适合作为评论