java - 我是否必须将一个类声明为公共(public)(它是程序中唯一没有人会使用的类)

标签 java class theory public

我是一名计算机科学专业的初学者,正在经历 Java 的挑战。我们必须编写一个有错误的程序;这实际上是一个有趣的练习。我的一位同学通过电子邮件给我发送了一个补丁(英文而不是 diff),并说他将 public 添加到了类(class)中。

这让我感到好奇。这很重要还是只是声明类 public 的约定。 该程序有效,据我了解,默认值是package-private,我认为这对于计算机科学学生互相邮寄的蹩脚小脚本来说是最好的。

任何人都可以给我更多关于这一点的见解吗?主要是关于 Java,但一般的 CS 理论可能也很有洞察力,也许还有一些我可以用来进一步研究这些概念的术语。

我想知道我的同学的纠正是否有效和/或重要以及原因。

编辑
抱歉,这是我原来的程序,没有错误

import java.util.Scanner;
/**
 * Universal hello translator
 * Author: Noel Niles mail: noelniles@gmail.com
 *
 */
class HelloUniverse {
    public static void main (String [] args)
    {
        /* code */
        int country; //number of country from list
        String name; //name of person
        String greeting; //hello in different languages

        Scanner key = new Scanner(System.in);
        System.out.print("Where are you from?\n"+
                         "Enter a number from the list:\n");

        //TODO(anyone): Add some more countries and greetings
        System.out.print("1. Afganistan\n" +
                         "2. Antarctica\n" +
                         "3. Australia\n"  +
                         "4. Austria\n"    +
                         "5. Bangladesh\n" +
                         "6. Belgium\n"    +
                         "7. Brazil\n"     +
                         "8. Burma\n"      +
                         "9. Canada\n"     +
                         "10. Chile\n"     +
                         "11. China\n"     );

        //get the country code
        country = key.nextInt();

        key.nextLine();
        //get the users name
        System.out.println("What is you name?");
        name = key.nextLine();

        switch (country) { 
            case 1: greeting = "salaam";
                    break;
            case 2: greeting = "h-h-h-i-i thththththere";           
                    break;
            case 3: greeting = "G'day mate";
                    break;
            case 4: greeting = "Gruss Gott";
                    break;
            case 5: greeting = "nomoskar";
                    break;
            case 6: greeting = "Hallo";
                    break;
            case 7: greeting = "Ola";
                    break;
            case 8: greeting = "mingalaba";
                    break;
            case 9: greeting = "Good day eh";
                    break;
            case 10: greeting = "Hola";
                     break;
            case 11: greeting = "Nei hou";
                     break;
            default: greeting = "Invalid country";
                     break;
        }

        //display the greeting and the users name
        System.out.printf("%s %s\n", greeting, name);
    }
}

最佳答案

不,包含 main 方法的类可以是非公开的。 (如果您确实愿意,它甚至可以是私有(private)嵌套类。)

main 方法本身必须是公共(public)的,但类不需要。

(请注意,这里没有“通用 CS 理论” - 每种语言和平台都有自己的约定和规则。)

(诚然,我强烈建议使用一组问候语而不是一个巨大的 switch 语句......但这是另一回事。)

关于java - 我是否必须将一个类声明为公共(public)(它是程序中唯一没有人会使用的类),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15942940/

相关文章:

sql - 如何编写一个简单的数据库引擎

java - 通过 Java 中的另一个函数传递字典值时通过引用更新字典值

java - 在jruby中导入java包中的所有类

java - 真正动态的 JPA CriteriaBuilder

artificial-intelligence - 多数独AI方法

algorithm - 为什么图灵机的数量是有限的?

java - 这应该是不稳定的还是结果不可预测?

delphi - 为什么我们应该使用类而不是记录,反之亦然?

java - 如何检查文本文件是否包含字符串?

c++ - 使用导致段错误的类在 C++ 中实现堆栈