0

我是 Java 编程新手,我创建了一个名为 Demo 的类并保存为 sample.java,同时编译这个 java 程序它给出如下编译错误

  public class Demo {
        public static void main(String[] args) {
        System.out.println("This is year");
                }
            }

sample.java:3:Demo 类是公共的,应该在名为 Demo .java 的文件中声明

为什么我们要在单个文件中声明公共类......

谢谢

穆克提尔

4

4 回答 4

2

因为这就是 Java 规范所要求的(或者至少,它允许实现需要这个;请参阅下面 Jon 的评论)。


至于“为什么”,我只能假设。但是很明显,Java 的设计者非常热衷于清晰的编码约定等。每个源文件一个公共类意味着在哪里可以找到某些东西没有歧义。

(如果有技术原因,我不知道。)

于 2012-05-31T10:39:41.100 回答
1

@Oli Charlesworth 是对的:这是 Java 语言规范所要求的。你可能会问他们为什么需要这个?可能的答案是把事情弄清楚。根据定义,类是原子单位。你可以用其他版本替换类,如果公共接口没有改变,一切都会继续工作。

因此,Java 语言设计者决定强制我们将每个类存储在单独的文件中。

他们只是为非公共课程做了一些例外。多个非公共类可以保存在一个文件中。我认为原因是非公共类是一种可以由作者随时更改的实现细节。由于类是非公开的,因此这些更改不应影响任何 API 用户。

但我强烈建议您将每个类(即使它不是公开的)保存在单独的文件中。这提高了代码的可读性,并最终提高了它的质量。

于 2012-05-31T10:45:52.337 回答
1

TL;DR:降低软件的概念复杂性。

如果您有许多隐藏在名称不相关的文件中的公共类,那么仅通过查看包结构就更难看到程序的概念结构。

@因为java规范是这么说的-我认为真正的问题是规范背后的推理

于 2012-05-31T10:40:18.183 回答
0

这是为了阻止人们在非正交命名的文件中将包含数百个类的文件弄得乱七八糟。namespacepart/namespacepart/namespacepart/classname 结构用于提供标准且可持续的结构。

于 2012-05-31T10:41:21.507 回答