類別可以有繼承關係,例如「人」是一種類別,而「學生」是另一種類別,但由於「學生」是「人」特例,因此我們可將「人」看成是基本類別(Base Class),而「學生」則是衍生類別(Derived Class),因此「學生」類別可以繼承「人」類別的性質和方法。善用繼承,可以讓我們使用簡單的方式來描述真實世界的各種關係。
若檢視我們的範例程式目錄,可以看到兩個目錄:@person 和 @student,其中 @person 是描述「人」的類別,而 @student 則是描述「學生」的類別。每個人都是由姓名、性別、身高、體重來定義(相關建構函式可見 @person 目錄下的 person.m),根據這些參數,我們就可以建構「人」的物件,範例如下:
在上述範例中,bmi() 是一個 person 類別的方法,可以計算一個 person 物件的 BMI (Body Mass Index) 值,定義成重量(以公斤為單位)對身高(以公尺為單位)平方的比值。此外在 @person目錄下,我們也定義了顯示物件的函式 display.m,讀者可以自行檢視其內容。
接著我們有一個 student 類別,這是 person 類別的衍生類別,所以它繼承了所有 person 類別的性質和方法,繼承的關係主要是規範在 student 的建構函式,如下:
在上述建構函式中,可以知道 student 類別共包含六個性質(name, gender, height, weight, department, year),其中前四個性質(name, gender, height, weight)是繼承自 person 類別,而後兩個性質(department, year)則是 student 類別特有的性質。此外,由於 student 繼承 person,因此 student 也可以使用所有 person 的方法,範例如下:
如果你檢視 @student 目錄,可以發覺此類別沒有定義任何方法,但由於 student 繼承 person,因此在上述範例中, student 物件 s1 會自動選用 person 的顯示方法,同時我們也可以呼叫 bmi() 函式來計算 s1 物件的 BMI 值,此函數定義於 @person 目錄之下。(當然,我們也可以在 @student 目錄下編寫另一個檔案 display.m,用來顯示 student 物件,此時 student 物件就會選用此方法來顯示,而不會使用 person 的顯示方法。)
MATLAB程式設計:進階篇