當java類都是放在同一個目錄下的時候,類之間的互相調用無需顯式聲明調用
同一個目錄下,兩個類的名字不能相同
檔案過多,查找和修改都不易,且容易出錯。
java支援多個目錄放置java,并且用過package/import/classpath、jar等級制配合使用,可以支援跨目錄放置和調用java類
package包,和c++中的namespace類似,
在java類檔案中的第一句話給出包的名稱
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI0gTMx81dsQWZ4lmZf1GLlpXazVmcvwFciV2dsQXYtJ3bm9CX9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCMy81dvRWYoNHLwEzX5xCMx8FesU2cfdGLwMzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5SM3IjM2cjM3YWMyYjMxEWZyYzX4UDNxQTMzAzLchDMyIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)
類全稱(長名稱)=包名稱+類名
短名稱=類名
類全稱cn.edu.ecnu.PackageExample,短名稱PackageExample
引用類的時候,必須采用全稱引用;程式正文可以用短名稱
PackageExample.java必須嚴格放置在cn/edu/ecnu目錄下
包名package name 要唯一
在PackageExampleTest.java中,可用import關鍵字來引入PackageExample類
cn.edu.ecnu是測試類PackageExample的包名
import相當于c++中的include
import有兩種寫法:①import cn.edu.ecnu.PackageExample
②import cn. edu.ecnu.*,不能import cn.*,*代表目錄下的所有檔案,但不包括子檔案夾
import規則
import必須全部放在package之後,類定義之前(差不多是代碼的第二行)
package必須是第一句話
多個import的順序無關
可以用*來引入一個目錄下的所有類(但不包括它們的子類),也就是說不能遞歸包含各個目錄下的檔案
import盡量精确,不推薦使用*,以免新增的同名程式會使得老程式報錯
例一:
package com.text;
public class NewExample {
public void hello() {
System.out.println("hello");
};
}
package net.abc;
import com.text.NewExample;
public class NewExampleTest {
public static void main (String[] a) {
new NewExample().hello();
}
}
在NewExampleTest中調用另一個包中的NewExample類。
package a;
public class Man {
}
package b;
public class Man {
}
package c;
import a.*;
import b.*;
public class Test {
public static void main(String[] args) {
a.Man m = new a.Man();//當程式中存在多個import*
//(即調用多個目錄所有檔案),将面臨着調用類指代不清的風險
}
}
/*交代不清有兩種解決方法,①:在調用的時候指明調用的是什麼即a.man
②:在import的時候,删除一個,用另一個的時候用b.Man調用
程式中需要引用多個同名的類,那麼隻能import其中一個,
并可用類名調用。
其他的類必須用全稱(類名加包名)調用。*/