1.7(java学习笔记)package和import
package
package主要用于管理类,在java中同一个包下不能有相同的类名,可有时项目总会出现很多同名的类,这时就需要通过包来管理类。不同的包下可以有相同的类名。
包就有点类似于文件夹,不同文件夹中可以有相同的文件名,一个文件夹下不能有同名的文件。
包的命名规则一般是域名倒着写,后面再加具体项目名称。
例如京东的就是 cn.jd.123
例如下面位于包cn.hcf.pro3下的TestExtends.java文件和位于包cn.hcf.TestThis包下的TestPackage.java文件中都有Person类,但他们处于不同的包中是可以的。
但当它们位于同一个包下时是不可以的。
2.import
import可以导入其他包的类,但这个类必须是以public修饰的(这个知识点还需要学习后面的访问控制才知道为什么)。
例如下面我在cn.hcf.oo包下的TestEqu中要用TestPackage包下的TestPackage类,就需要用import导入。
如果不导入,在一个包中使用其它包的类,则会出行错误。
1 package cn.hcf.oo; 2 3 4 import TestPackage.*; //包后面加*就代表导入TestPackage包中的所有类,也可以单独导入包中的一个类, 5 //import TestPackage.TestPackage 就代表导入TestPackage包中TestPackage类。 6 public class TestEqu { 7 public static void main(String[] args){ 8 TestPackage n = new TestPackage(); 9 10 } 11 }
导入还有静态属性的导入,比如在java.lang包下的Math类中有PI(圆周率)这个静态属性。我们使用要这样写,Math.PI,代表使用PI。
我们可以用静态属性的导入, import static java.lang.math.PI;就导入了PI这个静态属性,导入后可以直接写PI,因为该属性已被导入。
还有一个问题,导入时例如我们要使用Date类,在cn.test.1这个包和cn.test.2这两个包中都有Date类,我们导入时这样写
import cn.test.1.Date;
import cn.test.2.*;
那么我们用new = Date()新建一个对象时,优先选择具体导入的类,就是说此时的Date是cn.test.1包中Date;
如果我们既要使用cn.test.1中的Date,也要使用cn.test.2中的cn.test.2中的Date时
即使使用 import导入也会出现错误,因为创建Date时无法识别到底是哪一个包中的Date
这时我们需要写出Date具体的路径。
例如我们两个都要使用时:
cn.test.1.Date D1 = new cn.test.1.Date();
cn.test.2.Date D2 = new cn.test.2.Date();