最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

クラスのコンポーネント

クラスの基本構成

MATLAB® はクラス定義コードを、キーワードによって区切られたモジュール式のブロックに整理します。すべてのキーワードには対応する end ステートメントがあります。

  • classdef...end — すべてのクラス コンポーネントの定義

  • properties...end — プロパティ名の宣言、プロパティ属性の指定、既定値の代入

  • methods...end — メソッド シグネチャ、メソッド属性、関数コードの宣言

  • events...end — イベント名と属性の宣言

  • enumeration...end — 列挙型クラスの列挙型メンバーと列挙値の宣言

propertiesmethodsevents、および enumerationclassdef ブロック内でのみ使用するキーワードであることに注意してください。

クラス定義ブロック

classdef ブロックにはファイル内にクラス定義があり、これは classdef キーワードで始まり end キーワードで終わります。

classdef (ClassAttributes) ClassName < SuperClass
   ...
end

たとえば、次の classdefhandle クラスのサブクラスとなる MyClass というクラスを定義しますが、サブクラスの派生には使用できません。

classdef (Sealed) MyClass < handle
   ...
end

構文についての詳細は、Classdef ブロックを参照してください。

Properties ブロック

properties ブロック (固有の属性指定セットそれぞれに 1 つ) には、オプションの初期値など、プロパティの定義が含まれています。properties ブロックは、properties キーワードで始めて、end キーワードで終えます。

classdef ClassName
   properties (PropertyAttributes)
      ...
   end
   ...
end

たとえば次に示すクラスは、プライベートのアクセスをもち、かつ関数 date の出力と等しい既定値をもつ Prop1 というプロパティを定義します。

classdef MyClass
   properties (SetAccess = private)
      Prop1 = date
   end
   ...
end

詳細は、プロパティの定義を参照してください。

methods ブロック

methods ブロック (固有の属性指定セットそれぞれに 1 つ) には、クラス メソッドに対する関数定義が含まれています。methods ブロックは、methods キーワードで始め、end キーワードで終えます。

classdef ClassName
   methods (MethodAttributes)
      ...
   end
   ...
end

次に例を示します。

classdef MyClass
   methods (Access = private)
      function obj = myMethod(obj)
      ...
      end
   end
end

詳細は、メソッドと関数を参照してください。

Events ブロック

events ブロック (固有の属性指定セットそれぞれに 1 つ) には、このクラスで宣言するイベント名が含まれています。events ブロックは events キーワードで始め、end キーワードで終えます。

classdef ClassName
   events (EventAttributes)
      EventName
   end
   ...
end

たとえば、次に示すクラスでは、ListenAccessprotected に設定された StateChange というイベントを定義しています。

classdef EventSource
   events (ListenAccess = protected)
      StateChanged
   end
   ...
end

詳細は、イベントとリスナーを参照してください。

完全なクラス

完全なクラスの定義には、プロパティ、メソッドおよびイベントのコード ブロックの任意の組み合わせが含まれます。

classdef (Sealed) MyClass < handle
   properties (SetAccess = private)
      Prop1 = datenum(date)
   end
   properties
      Prop2
   end
   methods
      function obj = MyClass(x)
         obj.Prop2 = x;
      end
   end
   methods (Access = {?MyOtherClass})
      function d = myMethod(obj)
         d = obj.Prop1 + x;
      end
   end
   events (ListenAccess = protected)
      StateChanged
   end
end

列挙型クラス

列挙型クラスは単一のデータ型の値を表現する名前の固定セットを定義する特殊化されたクラスです。列挙型クラスはクラスで定義された列挙型メンバーを含む enumeration ブロックを使用します。

enumeration ブロックは enumeration キーワードで始め、end キーワードで終えます。

classdef ClassName < SuperClass
   enumeration
      EnumerationMember
   end
   ...
end

たとえば、次に示すクラスでは、論理値 false および true を表す 2 つの列挙型メンバーを定義しています。

classdef Boolean < logical
   enumeration
      No  (0)
      Yes (1)
   end
end

詳細は、列挙型クラスの定義を参照してください。

関連情報

クラス定義を含むフォルダー