静的メソッド
静的メソッドとは
静的メソッドはクラスに関連しますが、そのクラスの特定のインスタンスには関連しません。これらのメソッドは入力引数としてクラスのオブジェクトを必要としません。そのため、そのクラスのオブジェクトを作成せずに静的メソッドを呼び出すことができます。
静的メソッドを定義する理由
静的メソッドは、あるコードの実行前にクラスのインスタンスを作成するのが望ましくない場合に役立ちます。たとえば、MATLAB® 環境をセットアップしたり、静的メソッドを使用してクラスのインスタンスの作成に必要なデータを計算するとします。
あるクラスが、特定の許容誤差で計算された π の値を必要とするものとします。このクラスは、クラス内で使用するために、組み込み関数 pi
のクラス独自のものを定義できます。この手法は、クラスの内部動作をカプセル化された状態に保ちますが、クラスのインスタンスが値を返す必要はありません。
静的メソッドの定義
メソッドをスタティックとして定義するには、methods ブロックの Static
属性を true
に設定します。以下に例を示します。
classdef MyClass methods(Static) function p = pi(tol) [n d] = rat(pi,tol); p = n/d; end end end
静的メソッドの呼び出し
以下のように、クラスの名前、ドット (.
)、メソッドの名前の順に指定して静的メソッドを起動します。
classname.staticMethodName(args,...)
前述の節の MyClass
の pi
メソッドを呼び出すときには、次のステートメントが必要です。
value = MyClass.pi(.001);
静的メソッドは、他のメソッドの場合のように、クラスのインスタンスを使用して呼び出すこともできます。
obj = MyClass; value = obj.pi(.001);
静的メソッドの継承
メソッドの Sealed
属性が、スーパークラスにおいても true
に設定されている場合を除いて、サブクラスは静的メソッドを再定義できます。