1. 程式人生 > >包(package/import/protected)

包(package/import/protected)

什麼是包?
因為在同一資料夾中,不能出現同名檔案,包的出現是避免同名檔案問題,就是定義不同的包,在不同的包可存在相同的資料夾。包的本質是資料夾。包的存在是為了更好的管理檔案。
簡單定義一個包:

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許可權
    }
}