【问题标题】:Does Java need one public class if I have more classes on a file?如果我在一个文件中有更多类,Java 是否需要一个公共类?
【发布时间】:2015-08-11 02:33:45
【问题描述】:

如果我在一个 .java 文件上编写多个类,我是否需要至少一个公共类?

但如果我有多个没有任何公共的类,它会编译。

class A {
    int x=1;
    int y=2;
    void m1(int i){
        System.out.println("i="+i);
    }
}

class B extends A{
    void m1(int i){
        System.out.println("i="+i);
    }
}

class test{
    public static void main(String args[]){
        A a1=new A();
        B b1=new B();

        System.out.println(b1.x);

        System.out.println(a1.y);
        //System.out.println(A.y);

        a1.m1(4);
    }
}

【问题讨论】:

    标签: java class public


    【解决方案1】:

    不,您不需要在任何源文件中都有公共类。

    每个源文件最多可以有一个公共类。但并不要求每个源文件至少有一个公共类。

    【讨论】:

      【解决方案2】:

      我个人的偏好是每个文件放一个类,主要用于阅读目的。每个文件只能有一个类是公共的,但您可以拥有尽可能多的具有较少限制访问器的其他类。也看看嵌套类也许这就是你想要做的。

      看看这个: How many classes should a programmer put in one file?

      【讨论】:

      • 这不回答问题,应该是评论
      • 为什么每个文件一个类应该被认为是一种好的编码风格?定义受限范围类而不用额外的文件使项目混乱是很常见的。
      • 这正是我对嵌套类的看法。它们用于隐藏它们,并且只在公共类中使用它们。我也回答了这个问题,说每个文件只能公开一个类,但不能超过这个。
      • 嵌套类有点特殊,取决于你如何编写它们,你可能仍然需要一个封装实例才能使用它们,但这并不总是可能的。这就是在同一个源文件中定义的简单私有类派上用场的地方。假设每个源文件 1 个类是好的编码风格是错误的。
      • 如果你真的想这样做的话。但这似乎并不常见。此外,我从未说过每个文件只有一个类是最终解决方案。我只是想说,在大多数情况下应该考虑它,如果你需要这样一个私人额外课程,你真的必须再考虑一下。
      【解决方案3】:

      公共类必须在同名的 .java 源文件中实现,非公共类可以驻留在其他名称的源文件中。

      【讨论】:

        【解决方案4】:

        java language specification 声明:

        访问修饰符 public (§6.6) 仅适用于顶级类 (§7.6) 和成员类 (§8.5),不适用于本地类 (§14.3) 或匿名类 (§15.9.5)。

        【讨论】:

          猜你喜欢
          • 2019-06-25
          • 2015-03-22
          • 1970-01-01
          • 2013-06-03
          • 1970-01-01
          • 2018-07-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多