基礎程式設計(20)-套件與API

套件(Package)是由互相關連的類別和介面所組成,等同於一般程式語言的函式庫(Library),又可以稱為 API (Applications Programming Interface)。套件的來源大致可以分成三種:程式語言提供的標準API、引用外面別人寫的API、自行撰寫的API。一般來說程式語言提供最基礎的API(例如字串輸出)是不需要特別引用的。

套件宣告

在Java語言中,預設會將相同資料夾裡的程式都視為同一個套件。如果我們要明確建立、指定套件名稱時,要在程式檔案的第一行加入package指令:

package moke;

public class test
{
    public static void main(String[] args) {
        Card c1 = new Card();
        Card.Phone p1 = c1.new Phone(); //獨立宣告內層類別
    }
}

第 1 行的 moke 是 test.java 所在的資料夾名稱,如果套件有父子關係,也可以使用 xxx.moke 的形式表示在 xxx 資料夾裡的 moke 資料夾。

引用套件

無論是從那裡來的套件,引用的指令都是在程式開頭使用 import 引入。引用的方式可以直接指定類別名稱,或是用 * 將該套件的所有內容全部引入。

package test;

import moke.*;
import java.util.Date;

屬性與方法的種類

在「物件、屬性與方法」一文中,有介紹 public、private 和 static 的修飾字,這裡還有一個介於 public 和 private 之間的修飾字 protected。它允許相同套件的成員存取。加上「類別的種類」提到的 final 和 abstract,屬性和方法一共有 6 種權限的設定:

  • public:任何類別/物件都可以存取屬性或方法。
  • protected:相同套件的類別/物件及其子類別可以存取屬性或方法。
  • private:只有相同類別/物件的成員可以存取屬性或方法,子類別也不能存取。
  • static:不會產生副本的屬性或方法,表示所有物件都存取同一份屬性或方法。
  • final:表示為常數,所有物件都存取同一份屬性或方法,而且不能被覆寫、改變。
  • abstract:表示原型宣告的方法,必須在子類別實作。不能宣告為屬性。