繁体   English   中英

我是否必须声明一个类为公开类(这是程序中没人会使用的唯一类)

[英]Do I have to declare a class public (it's the only class in a program nobody will ever use)

我是一名刚开始学习Java技巧的计算机科学专业的学生。 我们必须编写一个有错误的程序。 这实际上是一个有趣的练习。 我的一位同学通过电子邮件向我发送了一个补丁(英语中没有diff),并说他在班上添加了public

这让我感到奇怪。 是重要的还是将类声明为public是一个惯例。 该程序正常工作,据我了解,默认值是程序包私有的 ,我认为这对于CS学生相互邮寄的笨拙的小脚本是最好的。

任何人都可以给我一些更多的见解-就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方法的类可以是非公开的。 (如果您确实需要,它甚至可以是一个私有嵌套类。)

main方法本身必须是公共的,但类不是。

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

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

如果您的类没有任何修饰符,则意味着该类在同一包或您的类中仍然可见。 在此处查看不同的访问级别: http : //docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM