建構函式
一個構造是在一個被建立物件的例項時呼叫類的特殊方法。它是一個接受輸入引數的常規 MATLAB 函式,但它也必須遵循某些規則 。
由於 MATLAB 建立了預設建構函式,因此不需要建構函式。然而,在實踐中,這是一個定義物件狀態的地方。例如,可以通過指定屬性來限制屬性 。然後,建構函式可以 initalize通過這實際上可通過構造的輸入引數傳送預設的或使用者定義的值這樣的性質。
呼叫一個簡單類的建構函式
這是一個簡單的類 Person
。
classdef Person
properties
name
surname
address
end
methods
function obj = Person(name,surname,address)
obj.name = name;
obj.surname = surname;
obj.address = address;
end
end
end
建構函式的名稱與類的名稱相同。因此,建構函式由其類的名稱呼叫。可以按如下方式建立類 Person
:
>> p = Person('John','Smith','London')
p =
Person with properties:
name: 'John'
surname: 'Smith'
address: 'London'
呼叫子類的建構函式
如果共享公共屬性或方法,則可以從父類繼承類。當一個類從另一個繼承時,很可能必須呼叫父類的建構函式。
類 Member
繼承自 Person
類,因為 Member
使用與 Person 類相同的屬性,但它也將 payment
新增到其定義中。
classdef Member < Person
properties
payment
end
methods
function obj = Member(name,surname,address,payment)
obj = obj@Person(name,surname,address);
obj.payment = payment;
end
end
end
與類 Person
類似,Member
是通過呼叫其建構函式建立的:
>> m = Member('Adam','Woodcock','Manchester',20)
m =
Member with properties:
payment: 20
name: 'Adam'
surname: 'Woodcock'
address: 'Manchester'
Person
的建構函式需要三個輸入引數。Member
必須尊重這個事實,因此用三個引數呼叫類 Person
的建構函式。它符合以下條件:
obj = obj@Person(name,surname,address);
上面的示例顯示了子類需要其父類的資訊的情況。這就是 Member
的建構函式需要四個引數的原因:三個引數用於父類,一個引數用於自身。