matlab 基礎知識class ( superclass_name
matlab中的class,在matlab中也可以通過創建類的方式實現面向對象編程。
1)類定義
>> classdef (attribute1 = value,...) classname(< superclass_name)
properties
PropName
end
methods
methodName
end
events
EventName
end
end
類名必須要與文件名相同,第一個括號中聲明類的屬性,類似於java中的public等關鍵詞,更詳細的解釋可參考:Class Attributes。第二個括號指明類是否需要繼承父類,類似於java中的extends關鍵字或者C++中的‘:’。同樣matlab也支持多重繼承,更詳細的解釋可參考:Creating Subclasses —Syntax and Techniques。在實現鏈表的過程中,我們需要繼承handle類。
properties類似於成員變量,更詳細的解釋可參考:Defining Properties。
methods就是具體的函數實現。有很多種不同類型的函數,下面簡要介紹:
普通函數(Ordinarymethods)。大部分都是普通函數,它負責完成該類要完成的主要任務。
構造函數(Constructormethods)。和其他高級語言類似,也必須是類名,用來給屬性賦值。唯一不同是它必須返回它創建的對象。更詳細的解釋可參考:Class Constructor Methods。
析構函數(Destructormethods)。名字必須是delete,用來釋放空間。更詳細的解釋可參考:Handle Class Delete Methods。
屬性訪問函數(Propertyaccess methods)。類似於其他高級語言中的set、get函數。更詳細的解釋可參考:Controlling PropertyAccess。
靜態函數(Staticmethods)。類似於其他高級語言中的靜態函數,通過類對象進行訪問。
轉換函數(Conversionmethods)。是對其他類構造函數的重載,可以將自己定義類的對象轉換成重載構造函數類的對象。更詳細的解釋可參考:Converting Objects to Another Class。
抽象函數(Abstractmethods)。無需解釋,用來在子類中繼承的函數。
例子:定義一個結點類node
>> classdef node < handle
properties
data
end
properties(SetAccess = public)
next
end
methods
function node = node(data)
if nargin > 0
node.data=data;
end
end
end
end