Java 快速導覽 - 宣告

我們重新看一次簡單的 Java 程式

class DemoApp {
    public static void main(String[] args) {
        Demo d = new Demo();
        d.printMessage();
    }
}

class Demo {
    String message = "^_^ 哈囉";
    
    public void printMessage() {
        System.out.println(message);
    }
}

/* 《程式語言教學誌》的範例程式
    http://pydoing.blogspot.com/
    檔名:DemoApp.java
    功能:簡單的 Java 範例
    作者:張凱慶
    時間:西元 2010 年 10 月 */


Java 程式是由物件 (object) 所組成的,物件則以類別 (class) 定義,也就是使用關鍵字 class 所定義的內容,例如,第 8 行到第 14 行為類別 Demo 的定義
class Demo {
    String message = "^_^ 哈囉";
    
    public void printMessage() {
        System.out.println(message);
    }
}


類別定義中可以包含屬性 (field) 跟方法 (method) ,實際上這三者的定義都是由宣告 (declaration) 開始。什麼叫做宣告呢?宣告的目的在於提供必要資訊給編譯器,類別的宣告應該包含
  • 存取權限修飾詞 (access level modifier) ,如關鍵字 publicprivate ,也可不加
  • 類別名稱,其為自行定義的識別字 (identifier)
  • 類別所繼承的父類別名稱,使用關鍵字 extends ,類別只能繼承自單一個父類別
  • 類別所實作的介面,使用關鍵字 implements


類別宣告後接一組大括弧,裡頭開始類別的定義。類別定義包括屬性跟方法,屬性的宣告應該包含
  • 存取權限修飾詞,如關鍵字 publicprivate ,也可不加
  • 資料型態,如關鍵字 intfloat 等,或是其他型態(類別)名稱
  • 屬性名稱,其為自行定義的識別字


Demo 定義了一個屬性 message ,其宣告成 String 型態的字串 (string) 物件,一個方法 printMessage() ,宣告存取權限為 public ,同時標示 void ,表示沒有回傳值。


字串是 Java 中處理文字資料的物件型態,也是預先定義好的類別,因此在程式中可以直接使用。這些預先定義好的東東都放在 java.lang 之中,包含許多常用的功能,不需要額外引入 (import) 到程式中,便可利用。


所謂的屬性,我們可以用變數 (variable) 來看待,也被稱為成員變數 (member variable) ,實際上該變數儲存的數值 (value) 是物件的某個可測量特性。 Java 中變數所儲存的數值可以是整數 (integer) 、帶小數點的浮點數 (floating-point number) 、字元 (character) 、布林值 (boolean) 或對物件的參考 (reference) 。


布林值只有兩個,也就是邏輯上的真 (true) 與假 (false) 。


雙引號圍起來的文字資料就是字串的 literal ,也就是依雙引號圍住的文字資料來建立的字串物件。屬性名稱後接的單一個等號,這是指派運算子,用來將字串物件的參考傳給屬性 message ,就是利用類別 Demo 所建立的物件都可以用 message 取得 "^_^ 哈囉" 的文字資料。


Literal 的中文意思為字面上的, Java 利用 literal 這個英文詞表示字面上的數值之意,就字串來說,雙引號內有哪些文字也就表示這個字串物件中有哪些文字。單一符號用單引號圍起來的,如 'a' ,這是字元型態的 literal ,實際上自串物件可以看成是許多個字元 literal 組合而成的物件。


方法的宣告應包含
  • 存取權限修飾詞,如關鍵字 publicprivate ,也可不加
  • 回傳值資料型態,如果沒有回傳值則用關鍵字 void
  • 方法名稱,其為自行定義的識別字
  • 參數列 (parameter list) ,也就是小括弧圍起來的內容,若無參數可留空白
  • 例外列 (exception list) ,使用關鍵字 throws ,若無可不加


Demo 的 printMessage() 方法只有前三項,也就是存取權限為 public ,沒有回傳值標明 void ,方法識別字為 printMessage 。 DemoApp 的 main() 多了一個修飾詞 static ,這個 static 指定 main() 屬於類別,而非物件實例 (instance) ,我們稍後才會詳細說明有關修飾詞 static 的使用。


printMessage() 所做的工作很簡單,就是利用 java.lang 中類別 System 的屬性 out , out 為 PrintStream 型態的物件, println() 則是 PrintStream 在標準輸出串流 .... ,很複雜,對不對呢?用一個簡單的方式理解,利用 System.out.println() 就能夠在命令列印出字串囉!


中英文術語對照
物件object
類別class
屬性field
方法method
宣告declaration
存取權限修飾詞access level modifier
識別字identifier
字串string
引入import
變數variable
成員變數member variable
數值value
整數integer
浮點數floating-point number
字元character
布林值boolean
參考reference
true
false
參數列parameter list
例外列exception list
物件實例instance




沒有留言: