packages
Java中的一种方式是让不同的库可以重用类名而不会相互冲突。包就像语言提供的另一个范围规则。例如:
public class Example {
String exampleString = "example";
}
public class Another {
String exampleString = "This would never work with a global name space";
}
我们能够在同一个程序与exampleString
标识符的两个String
对象,因为它们是在不同的scope
。同样,
package example;
public class Example { }
,并在一个单独的文件
package separateexample;
public class Example {}
我们可以有一个类名相同的名称,因为它是一个不同的范围。我们仍然可以唯一地指定对象:
example.Example
或separaeteexample.Example
这些是这些类的全限定类名称。
欲了解更多信息,请查阅the java tutorial
对于约定Java包:如果你想写一个库,有很多人使用它,你需要确保没有命名冲突。软件包可以像上面一样使用以避免它们 - 但为了确保没有任何冲突,例如软件包名称本身,您需要一个完全全球唯一的软件包名称,以确保其他公司在尝试使用时不会使用其他公司的名称使用你的产品。域名恰好是全球唯一的字符串,所以将公司域名作为包名称反转是惯例。
com.example.myapp.Example
不可能发生冲突,只要你真正拥有example.com(没有人打破了惯例)
因此,要回答你的主要问题packages
在Java中是相同的概念namespaces
在.net
带有主函数的类的名称不起作用。这听起来像你的组织的惯例。 – Bill