包(package/import/protected)
阿新 • • 發佈:2018-10-31
什麼是包?
因為在同一資料夾中,不能出現同名檔案,包的出現是避免同名檔案問題,就是定義不同的包,在不同的包可存在相同的資料夾。包的本質是資料夾。包的存在是為了更好的管理檔案。
簡單定義一個包:
package www.code;
public class Pack
{
public static void main(String[] args)
{
System.out.println("hello day");
}
}
打包編譯命令 :javac -d . Pack.java,在編譯後,會在當前目錄下生成一個資料夾www,在www下會有一個資料夾code,code資料夾下有Pack.class二進位制檔案。
-d 表示生成目錄,根據package定義生成;
. 表示在當前所在目錄生成子目錄。
在執行時:java www.code.Pack
包的匯入(import):
//定義一個包
package www.code.me;
public class Message
{
public void func()
{
System.out.println("Message 類");
}
}
在主類中匯入上面的包:
//包的定義: package www.code; import www.code.me.Message; //包的匯入 public class Pack { public static void main(String[] args) { Message message =new Message(); message.func(); //Message類 } }
多個包的自動匹配編譯順序:在當前目錄下按照主類的使用情況自動編譯。
對於有多個包編譯:javac -d . ./*.java
執行:java www.code.Pack
系統常用包:
- java.lang : 系統常用基礎類(String類、Object類、包裝類),JDK1.1之後自動匯入
- java.util : Java 提供的工具程式包(集合類,ArrayList ,HashMap),需要手動匯入
- juc : java.util,concurrent :併發程式包
訪問控制權限:
private < default < protected < public
default是預設許可權即什麼都不寫,包訪問許可權:僅供在同一包下類訪問
protected : 繼承訪問許可權,有繼承關係的類可以訪問。
關於protected:
//protected 屬性在同一包的子類可以訪問
class A
{
protected static int age=10;
}
public class Test extends A
{
public static void main(String[] args)
{
System.out.println(age); //子類訪問父類的protected許可權 ,另外靜態方法訪問屬性時,屬性必須是static
}
}
不同包的繼承類中訪問protected屬性:
package www.code.me;
public class Message
{
protected int age=10;
public void func()
{
System.out.println("Message 類");
}
}
定義另外一個包進行繼承Message類:
package www.code;
import www.code.me.Message; //包的匯入
public class Pack extends Message
{
public static void main(String[] args)
{
Message message =new Message();
message.func(); //Message類
System.out.println(new Pack().age); //10 在不同包的子類中訪問protected許可權
}
}