在幾乎每個 JavaFX Script 應用程序中,您都需要編寫一個或多個類。在某些情況下,您需要從頭編寫類;在其他情況下,您需要擴展現有類的行爲。本課首先展示您以前看到過的 Customer 類的完整腳本。此外提供了一個抽象類 Account 。隨後,您將會看到如何擴展該類以創建 SavingsAccount 和 CheckingAccount 類。 |
- | Customer 示例 |
- | 從其他類繼承 |
在編寫腳本中,您學習瞭如何使用對象。但是,請回想一下,我們首先要求您下載多個 .class
文件,這樣編譯器將知道如何創建 Address
和 Customer
對象。以下示例重新訪問這些代碼,此外添加了缺少的類定義以便對所有的內容進行編譯。
def customer = Customer { |
由於您已經瞭解了變量和函數,因此應該對該示例比較熟悉。Address
類聲明瞭 street
、city
、state
和 zip
實例變量,這些變量均爲 String
類型;Customer
類也聲明瞭幾個實例變量以及用來輸出這些變量的值的函數。由於這些變量和函數是在類中聲明的,因此您創建的任何 Address
和 Customer
對象都可以使用它們。
您還可以編寫從其他類繼承變量和函數的類。例如,設想您在銀行有一個儲蓄賬戶和一個支票賬戶。每個賬戶都有賬號和餘額。您可以查詢餘額、存款或取款。我們可以通過創建一個用來提供最常用的變量和函數的 Account
基類來對以上情況進行建模:
abstract class Account { |
我們已經將該類標記爲 abstract
,這意味着不能直接創建 Account
對象(此設計的目的在於使您只能創建儲蓄賬戶或支票賬戶)。
accountNum
和 balance
變量用來存放賬號和當前餘額。其餘函數提供基本行爲:獲得餘額、存款或取款。
然後,我們可以定義一個使用 extends
關鍵字來繼承這些變量和函數的 SavingsAccount
類:
class SavingsAccount extends Account { |
由於 SavingsAccount
是 Account
的子類,因此它將自動包含 Account
的所有實例變量和函數。這樣就可以使 SavingsAccount
源代碼將重點放在它與其父類之間的區別(要求儲蓄賬戶所有者必須至少保持 100 美元的餘額才能避免受罰)上。
類似地,我們可以定義一個也對 Account
進行擴展的 CheckingAccount
類:
class CheckingAccount extends Account { |
該類與 Account
的區別在於,它定義了一個用來跟蹤賬戶所有者是否有透支保護(如果取款(例如寫支票)導致餘額小於零,則透支保護將激活以確保支票不會被退回)的變量。請注意,在這種情況下,我們將更改所繼承的 withdraw
函數的行爲。這就是所謂的函數覆蓋(由 override
關鍵字指示)。