Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

別ファイルのメソッド

クラス フォルダー

一部の例外 (classdef ファイルで定義しなければならないメソッドを参照) を除き、クラス定義ファイルとは別のファイルにクラスのメソッドを定義できます。

複数のファイルを使用してクラスを定義するには、@ で始まり、その後にクラス名が続く名前のフォルダーにクラス ファイルを格納します。このフォルダーはクラス フォルダーと呼ばれます。クラス フォルダーの親フォルダーが MATLAB® パスにあることを確認してください。

クラス フォルダーが 1 つ以上のパッケージ フォルダーに含まれている場合は、最上位のパッケージ フォルダーが MATLAB パス上になければなりません。

たとえば、@MyClass というフォルダーには、classdef ブロックを含む MyClass.m ファイルがなければなりません。さらにこのフォルダーには、.m 拡張子をもつ他のファイルで定義された、他のメソッドと関数が含まれます。@MyClass フォルダーにはいくつかのファイルを含めることができます。

@MyClass/MyClass.m
@MyClass/subsref.m
@MyClass/subsasgn.m
@MyClass/horzcat.m
@MyClass/vertcat.m
@MyClass/myFunc.m

メソッド ファイルのタイプ

MATLAB はクラス フォルダー内のすべての関数ファイルをクラスのメソッドとして扱います。関数ファイルには MATLAB コード (.m)、ライブ コード ファイル形式 (.mlx)、MEX 関数 (プラットフォーム依存の拡張子)、および P コード ファイル (.p) を使用できます。ファイルのベース名は、有効な MATLAB 関数名でなければなりません。有効な関数名は、アルファベットで始まり、文字、数字またはアンダースコアを含むことができます。

C++ MEX 関数としてメソッドを定義する方法の詳細については、MATLAB クラス メソッドに対する MEX 関数の使用を参照してください。

関数ファイルでのメソッドの定義

メソッドをクラス フォルダー内の別のファイルで定義するには、ファイル内に関数を作成します。そのファイルでは method-end キーワードを使用しないでください。関数の場合と同様に、関数名を使用してそのファイルに名前を付けます。

myFunc.m ファイルに次のメソッドを実装します。

function output = myFunc(obj,arg1,arg2)
   ...% code here
end

methods ブロック内の classdef ファイルで関数シグネチャを宣言しておくことをお勧めします。

classdef MyClass
   methods
      output = myFunc(obj,arg1,arg2)
   end
   ...
end

classdef ファイルでのメソッド属性の指定

別の関数ファイルで定義したメソッドにメソッド属性を指定する場合は、classdef ファイルの methods ブロックにメソッドのシグネチャを含めます。この methods ブロックは、メソッドに適用される属性を指定します。

たとえば次のコードは、methods ブロック内で Accessprivate に設定されているメソッドを示しています。メソッドの実装は別のファイルにあります。function または end キーワードは methods ブロックに含めないでください。入力引数および出力引数の表記された関数シグネチャのみを含めます。

classdef MyClass
   methods (Access = private)
      output = myFunc(obj,arg1,arg2)
   end
end

@MyClass フォルダーの myFunc.m というファイルで、次の関数を定義します。

function output = myFunc(obj,arg1,arg2)
   ...
end

別ファイルでの静的メソッド

静的メソッドを作成するには、メソッドの Static 属性を true に設定し、classdef ファイル内の静的メソッドに関数シグネチャをリストします。関数名と共に、入力引数と出力引数を含めます。次に例を示します。

classdef MyClass
...
   methods (Static)
      output = staticFunc1(arg1,arg2)
      staticFunc2
   end
   ...
end

同じ関数シグネチャを使用して、別のファイルで関数を定義します。たとえば、ファイル @MyClass/staticFunc1.m で次のようにします。

function output = staticFunc1(arg1,arg2)
   ...
end

また、@Myclass/staticFunc2.m で次のようにします。

function staticFunc2
   ...
end

classdef ファイルで定義しなければならないメソッド

次のメソッドは classdef ファイルで定義します。これらのメソッドを別ファイルで定義することはできません。

  • クラス コンストラクター

  • 関数名にドットを使用する関数。以下が含まれます。

    • クラスがパッケージに含まれているため、パッケージ名をクラス名の一部として使用しなければならないコンバーター メソッド

    • プロパティの set および get アクセス メソッド

関連情報

関連するトピック