类名冲突


完整的类路径
“包名.类名”是类的完整路径,如:java.util.List和java.lang.String(其中java.List和java.lang是包名)。API中有两个Date类,一个是java.util.Date,另一个是java.sql.Date,这两个类的类名相同,但却处在不同的包里面,因此在创建Date的对象时需要写上完整的类路径(或者用import关键字导入包,但创建重名类的两个对象时就要写完整路径了),否则无法通过编译,只有在确定某个类时唯一的类时,才可以不写包名。

使用完整路径来创建对象:
包和import关键字
包是用来包装类的,包的出现是为了方便有序的管理杂乱的类。
先来看下面的代码和运行结果:


通过代码可以看到有两个包MyProject_1和MyProject_2,两个包下都要method两个类,两个类中都有show方法,然后创建method的对象x,调用show方法,运行结果如下:
可以看到输出的是“飞霜”而不是“踏雪”,因为主方法在MyPackage_1包下,在主方法中创建method类对象默认创建的是MyPackage_2包下的method类对象;如果要创建MyPackage_2包下method类的对象,就需要使用完整的类路径了,如图所示:
但是,发现对象y无法调用show方法,其原因是MyPackage_2包下的method类中的show方法没有权限修饰符,这样会被默认为protected,只能在本包调用,不能再其它包调用,因此加上public修饰符,如下图所示:
import关键字的作用:使用import关键字导入包;使用import关键字导入静态成员变量。
关于使用import关键字导入包就不详细介绍了,就介绍一下带“”的导入方法(如:“import java.lang.;”),其意思是导入lang包中的全部类。
使用import导入静态成员变量,如图所示:
