为什么Java编译器不支持进口的继承?(Why should the Java compiler n

2019-07-17 16:15发布

在Java中,进口有关的(外部)类,因为每个(外)类应该在一个单独的文件进行编码。 因此,我们可以宣称, import ...; 一个类定义之前指示与类(有点像注解)相关联。

现在,如果一个可以继承父类的进口,这将大大降低源文件的混乱。 为什么这是不可能的? 即为什么要在Java编译器还没有考虑基类的进口?

笔记:

  • 很可能有不止一个答案。
  • 我知道这是不是一个问题,如果你让偏食组织你的进口,没有必要提及这一点。 这是关于“为什么”,而不是“如何”(A-LA- 此 )。

Answer 1:

而是每一个市民,顶层类必须是-首先,需要注意的是并非每个类都必须在一个单独的文件进行编码是很重要的。 不,进口并没有真正与任何类相关联 - 它们只是用来包含文件中的某些外部类/包,以便他们可以使用的语句。 事实上,你永远需要实际输入任何东西,你总是可以用全称,即:

java.util.List<String> list = new java.util.ArrayList<String>();

进口在那里为方便(并只用于编译-类编译后,他们都将丢失),以节省您不必编写了这一切,而不是仅仅让你写List<String> list = new ArrayList<String> (之后您从相关进口java.util )。 因此,没有理由为什么子类应该“继承”的进口。



Answer 2:

进口商品有语法糖,仅此而已。 你可以写任何Java程序而没有使用import语句,如果你真的想。 例如,下面的类编译所有的本身:

class Foo {
  java.util.List<String> list = new java.util.ArrayList<String>();
}

此外,继承进口使得它更,更难从类中删除导入。 例如,如果Bar.java从继承Foo.java ,您可能无法删除从进口Foo不将其加入Bar 。 强制进口要明确使得显著容易改变一个单一的文件,而不必担心对其他文件的影响,这是相当多的Java和面向对象编程的基本原则一般。

(最后这一点是与那名问题在围棋的设计显著的因素 ,它是专门试图避免在这一领域的C和C ++的问题。)



Answer 3:

有每个文件明确指定的进口提高了可读性。 想象一下,打开一个文件,而不是能够看到的依赖性一目了然,因为进口从另一个文件继承。



文章来源: Why should the Java compiler not support inheritance of imports?