什麼是 JavaFX 中的對象?如何創建對象?本課介紹對象的基本概念、對象字面值以及如何調用對象中的函數。 |
- | 什麼是對象? |
- | 聲明對象字面值 |
- | 對象字面值語法 |
- | 調用實例函數 |
什麼是對象?對象是由狀態和行爲構成的離散軟件包。簡單地說:
- 對象的狀態由其變量來表示。
- 對象的行爲由其函數來表示。
從概念上來講,對象可以對任何事物進行建模:從 GUI 組件(按鈕、複選框和文本標籤)到不可見的抽象概念(溫度數據、財務記錄、產品註冊信息等)。
注:有關更多信息,請參見 Java 教程中的什麼是對象一課。
在 JavaFX Script 編程語言中,對象是使用對象字面值創建的:
Address { |
在這裏,我們創建了一個 Address
對象,該對象用在假設的通訊錄應用程序中。下載 Address.zip
並解壓縮以生成 AddressBook.fx
和兩個 .class
文件。
注:Address.class
文件(Address.class
和Address$Intf.class
)包含編譯器允許您創建Address
對象所需的信息。如果您想知道它們從何而來,我們首先創建了一個Address
類定義(在名爲Address.fx
的文件中),然後對其進行編譯,生成Address.class
。JavaFX Script 編程語言和作爲其構建基礎的 Java 編程語言都提供大量預先生成的.class
文件,您可以在程序中使用這些文件。這樣,就可以爲大量編程任務(包括開發具有複雜視覺效果的 GUI)創建對象。我們將在本教程結尾處的編寫您自己的類中介紹如何編寫您自己的類。其間我們會要求您如此處所示針對特定的示例下載一個或兩個.class
文件。
現在編譯 javafxc AddressBoox.fx
腳本;這些代碼不產生任何輸出,但編譯事實本身表明已成功創建對象。
注:從技術上講,此示例中的變量稱爲實例變量。您可以將實例變量看作每個對象中都肯定會包含的一組內置屬性。實際上,該語言的早期版本中就使用了“屬性”一詞(您仍會偶爾在舊的文檔和演示中看到該詞)。在面向對象編程領域中,“實例”和“對象”是同義詞,這正是“實例變量”一詞的由來。
對象字面值語法既簡單易學又直觀好用。第一個字 (Address
) 指定要創建的對象的類型。左花括號和右花括號定義對象的主體。其他內容(street
、city
、state
和 zip
)初始化對象的實例變量。
可以按同樣的方式創建多個對象:
Address { |
注:在聲明對象字面值時,可以用逗號、空格或分號分隔實例變量。以下聲明也是正確的:
Address {
street: "1 Main Street"
city: "Santa Clara"
state: "CA"
zip: "95050"
}
Address {
street: "200 Pine Street",
city: "San Francisco",
state: "CA",
zip: "94101",
}
本教程一般使用分號。在聲明函數時,也需要使用分號。
您還可以將新創建的對象賦給變量以供以後訪問:
def addressOne = Address { |
或者將一個對象嵌套在另一個對象中:
def customer = Customer { |
在最後一個示例中,Customer
對象引入了幾個新變量,在名爲 address
的變量中包含最初的Address
對象。該嵌套對象結構極爲常見,它演示了在一個對象中包含另一個對象時程序員(或 IDE)如何縮進代碼。通過縮進,Address
變量在視覺上與 Customer
變量分開。要編譯此示例,請下載Customer.zip
,對其進行解壓縮並將文件放在與其他文件相同的目錄中,然後按照通常的方式對腳本進行編譯。
JavaFX 中有許多類變量都提供您希望利用的行爲。此行爲可以通過對象的函數來訪問。您將在編寫您自己的類中學習如何爲您的對象編寫函數,但是現在我們將向您演示如何使用現有的行爲。
您可以通過以下方法調用對象的實例函數:鍵入變量的名稱(在本例中爲 customer
),後跟一個句點 ("."),句點後跟您希望調用的函數:
def customer = Customer { |
這將生成以下輸出:
Name: John Doe |
此時,您可能想知道:“這些函數名稱來自何處?我如何提前知道對象中包含哪些實例變量或函數?”。如果您要使用某個庫或類,則應當查閱它的應用編程接口 (Application Programming Interface, API) 文檔。API 文檔正式列出了對象的變量和函數。查閱該文檔是確切瞭解給定對象所提供的功能的唯一途徑。當您在以後的教程中開始構建圖形應用程序時,您將學習如何使用這樣的文檔。