Java中的包在一定程度上类似于C++的命名空间,可以用于防止类名冲突。Java自带的类都位于java和javax包层次中,但引入时不能使用import java.*或import javax.*。
当遇到同时使用几个不同包下名称相同的类时,在使用的地方可以直接加上包路径以防止冲突,如 java.util.Date date=new java.util.Date date();
静态导入 import static java.lang.Math ,则可直接使用Math的静态方法,如sqrt(a)。
包的作用域:
1.标记为public的类、属性或方法,可以被任意的类访问。标记为private的,只能被定义他们的类使用。
2.若此类、属性或方法没有被public、private修饰,则只能被同一包路径下的类访问。
3.类的属性或方法若被protected修饰,那么次属性或方法可以在同一包的其他类访问,可以被其他包中的子类访问。protected修饰的情况比较复杂,详见protected修饰规则。
类冲突:
上面讲到包有有命名空间的作用,可以防止类名冲突。但是有一种情况,当使用第三方jar包的时候,可能会由于jar包下定义的全路径类相同,导致类冲突产生。此类冲突,我们一般常称为jar包冲突,此类冲突也有相应的解决方案。jar包冲突以及解决方案。