1、C#命名空间只是一种逻辑上的结构,它允许所组织的类文件和物理丰放位置与逻辑结构不一致,而Java中类文件的物理结构必须与的结构一致。
2、Java的package本身没有子包
的概念,所有package都是并列的关系,没有谁包含谁的问题。比如:org.dominoo.action和
org.dominoo.action.asl之间绝对没有包与子包的关系。它们是各自独立的包,各自拥有自己的class/interface的集合。
在org.dominoo.action.asl的某个java文件里,如果想引用org.dominoo.action里的某个
class/interface,则必须import
org.dominoo.action。
C++/C#的namespace方案则不然,一个namespace可以有自己的sub-namespace,我们不妨将namespace也称为package,那么C++/C#的package之间就可能存在包与子包的关系.
3、Java中使用import语句而C#中使用using namespace语句。
首先C#里面的命名空间和java中的包都属于访问权限的控制机制,就是说,只有具备相应的权限才允许代码访问它们内部的类。但是java中的包需要对应一个物理文件夹,文件夹名必须和包的名称一致,C#中的命名空间则不受这种限制。