建構函式

一個構造是在一個被建立物件的例項時呼叫類的特殊方法。它是一個接受輸入引數的常規 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 的建構函式需要四個引數的原因:三個引數用於父類,一個引數用於自身。