1、名称冲突问题:
C语言中所有的函数都是全局的,因此在多人合作的大型项目开发中容易出现两个函数同名的情况,如:A完成的.c文件中有一个名为compare的函数,B完成的.c文件中也有名为compare的函数。
C语言中一般是通过在函数名上加上前缀来解决名称冲突问题。
Java中是不是也有类似的问题呢?
2、Java字节码文件:
Java中的基本程序单元是类。
每个类在经过编译之后将生成一个对应的.class文件。
.class是Java虚拟机上的字节码文件,是Java虚拟机上的可执行文件。
Java源文件在经过编译之后会在其目录下生成源文件中每个类的字节码文件。
3、Java中的包:
包是Java中组织类和管理类名空间的方式。
位于不同包中的类即使同名也不会冲突。
包实际上是类的容器并且提供了类的可见性限制机制。
package关键字用于将文件中对应类的字节码文件装入包中。
从操作系统的观念看,每个package对应一个逻辑文件夹。
4、类的可见性:
Java语言规定一个文件中只能有一个类被声明为public。
public类必须与文件名完全相同(不包括文件后缀)。
Java中的类可见性只有可见和不可见两种。
public类可以被其它包中的类导入使用。
非pubic类只能被同一个包中的类使用。
protected和private不能用于限定类的可见性。
5、访问权限总结:
6、一些建议:
每个属性和方法都显示声明访问权限,不适用默认权限。
对于逻辑上对外不可见的属性和方法尽量设置为private。
虽然Java语言中同一个包中的其它非子类可以自由访问protected成员,但这是不推荐的。
将逻辑上相关的类组织在同一个包中,以包的形式组织程序的类。