我是否必须在每个班级使用“套餐”一词?

时间:2013-07-22 21:41:02

标签: java

首先,我正在尝试使用 Java,初学者指南,第4版来学习Java。我使用Ubuntu作为我的操作系统,使用Netbeans作为我的IDE。我需要创建一个项目来使用Netbeans时创建一个类。

这是我的hello world app。

class First{
    public static void main(String args[])
    {
        System.out.println("Hello!");
    }   
}

但是这会返回很多错误。当我将package first;行放到我的Java类的顶行时,它会运行。但是,这本书没有使用包期限。这是Netbeans的规则,还是我需要了解的内容?

4 个答案:

答案 0 :(得分:18)

您永远不会需要将类放入包中。但是,这几乎总是一个好主意。这是Netbeans积极鼓励你做的事情。

对于小型项目,使用默认包(即没有package语句的文件)是可以的。但是,一旦您的项目增长并开始添加外部库,就会发生不好的事情。如果其他人决定使用默认包并碰巧有一个同名的类怎么办?现在,因为你们都在同一个包中,所以可能会发生冲突!

您的文件结构也应该反映您的包裹。也就是说,package com.myurl.helloworld中的文件应位于名为com/myurl/helloworld的文件夹中。这与上述原因相同。

另外,您可能没有在学习中使用此类,您无法从默认包中导入类,也无法在默认包类中使用package-private visibility修饰符。

答案 1 :(得分:11)

那是因为 Java,初学者指南,第4版的作者最有可能使用“默认包”。这样,您就不必包含任何包。包是名称空间声明。

什么是命名空间声明!? 命名空间声明只是一个用于组织类的包。例如,如果您要使用多个类,假设您的GUI和算法的多个类,将它们混合在一起总是有点令人困惑。然而,在不同的包装中对它们进行分类是一种很好的解决方案。

如果其他人要查看您的代码,还应该遵循一个命名约定。软件包应以顶级域名命名。我倾向于创建SourceForge项目,然后我最终得到这样的东西:

net.sourceforge.softwarename.securitynet.sourceforge.softwarename.gui等......

另请注意,在命名包装时,切勿使用大写字母。更多信息here

在学习编程时,你会遇到很多这样的情况。他们都是游戏的一部分。你只需要自己弄清楚。

我能为您做的最好的事情是推荐Eclipse。另外,在学习Java时,我建议您不要使用IDE!那是因为你将学会独立编码。但是,这取决于你。

答案 2 :(得分:1)

Package表示包含相关类和接口组的目录。

  

包是一个命名空间,用于组织一组相关的类和   接口。从概念上讲,您可以将包视为类似于   您计算机上的不同文件夹。您可以将HTML页面保持为一个   文件夹,另一个中的图像,以及另一个中的脚本或应用程序。   因为用Java编程语言编写的软件可以   它由数百或数千个单独的类组成   通过放置相关课程来保持井井有条的感觉   接口到包中。

下面你可以找到一些关于java包的好讨论:

答案 3 :(得分:1)

不,你不需要在你的类中放入一个包,除非你要将它导入另一个将在它自己的文件中的类。这是受保护类型变量进入的地方,当您不想让它们保持私有但只希望子类(或子类)访问它们时。你也错过了你班级的公开声明,所以看起来应该是

public class First{
    public static void main(String[] args){
          System.out.println("Hello!");
       }


}