2013-07-22 77 views
12

首先,我正在尝试使用Java,初学者指南,第4版来学习java。我使用Ubuntu作为操作系统和Netbeans作为IDE。在使用netbeans时,我需要创建一个项目来创建一个类。我是否必须在每个类中使用“包”术语

这是我的你好世界应用程序。

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

但是这会返回很多错误。当我把package first;行放到我的java类的最上面时,它会运行。但书没有使用包术语。这是NetBeans的规则,还是我需要知道的这个?

+1

它是一个名称空间声明,Java特定的,而不是Netbeans的要求。 http://en.wikipedia.org/wiki/Java_package –

+1

好吧,我明白了。当我将我的课程从包装中移出时,我不需要使用包装术语。 – Yusuf

回答

15

你从来没有需要把一个类放在一个包中。但是,它几乎总是一个好主意。这是Netbeans积极尝试鼓励你去做的事情。

对于小项目,使用默认包(即根本没有包)是可以的。但是,一旦你的项目增长并开始添加外部库,就会发生不好的事情。如果其他人决定使用默认包并碰巧拥有一个同名的类,该怎么办?现在,既然你们都在同一个包里,就会发生碰撞!

你的文件结构也应该反映你的包。也就是说,package com.myurl.helloworld中的文件应位于名为com/myurl/helloworld的文件夹中。这是出于与上述相同的原因。另外,您可能还没有在这里学习,您不能从默认包中导入类,也不能在默认包类中使用包 - 隐私可见性修饰符。

10

这是因为作者Java,新手指南,第4版最有可能使用“默认包”。这样,你不必包含任何包。包是一个名称空间声明。

什么是命名空间声明!? 命名空间声明只是一个用来组织类的包。举个例子,如果你将要有多个类,比如说你的GUI和多个算法类,把它们混合在一起总是有点混乱。然而,将它们分类到不同的包中却是一个出色的解决方案。

还有一个命名约定,如果其他人要看你的代码,你应该遵循这个约定。包应该以顶级域名命名。我倾向于创建SourceForge上的项目,然后我结束了这样的事情:

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

另外请注意,命名您的包时,你不应该使用大写字母。更多信息here

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

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

+1

你写了一个很好的答案,但你实际上没有向穷人解释包装是如何工作的。软件包从一开始就一直在使用Java,所以忽略它的书并不是本书过时和过时的问题。切换到Eclipse(或任何其他IDE)不会被神奇地解决。 –

+1

你现在可以考虑消除厌恶吗? – Scientious

+0

我宁愿推荐使用您将使用的IDE,因为您正在学习Java,这样,您不仅仅是一只猴子卡住记事本,而其他人都是高效的。 – ProfK

1

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

软件包是一个命名空间,它组织一组相关的类和 接口。从概念上讲,您可以将软件包视为与计算机上的其他文件夹相似的 。您可以将HTML页面保存在一个 文件夹中,另一个中的图像以及另一个文件夹中的脚本或应用程序。 因为使用Java编程语言编写的软件可以是由数百或数千个单独的类组成的 ,所以通过将相关类和接口放入包中可以使事物保持组织。

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

1

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

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


} 
相关问题