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();

 

posted @ 2018-07-17 16:12  gcmh  阅读(240)  评论(0编辑  收藏  举报