ISO2002MF 

メソッド呼び出し

メソッド内の手続きコードは、INVOKE 文を用いてメソッドを呼び出した場合、文内メソッド呼び出しを行った場合、

MF 動詞シグネチャを参照した場合、

またはオブジェクト プロパティを参照した場合に実行される。メソッド呼び出しに対応するメソッドの実装は、メソッド呼び出しの対象のオブジェクトの実行時のクラスによって決まる。それは必ずしもオブジェクト参照の定義内で静的に指定されているクラスはなく、メソッド呼び出しを具体的なメソッドの実装に解決するために使用されるのは、実行時に参照される実際のオブジェクトのクラスである。

呼び出しでオブジェクト参照を用いてオブジェクトを指定する場合は、次のようになる。

  1. 特定されたオブジェクトがファクトリ オブジェクトである場合、メソッド呼び出しはファクトリ メソッドに解決される。
  2. そうでない場合は、オブジェクト メソッドに解決される。

呼び出しでクラス名を用いてオブジェクトを指定する場合、指定したクラスのファクトリ オブジェクトがメソッドを呼び出す対象のオブジェクトとして使用され、メソッド呼び出しはファクトリ メソッドに解決される。

メソッドの解決は、次の規則に最初に該当するものが適用される。

  1. 呼び出しで指定されたメソッド名を持つメソッドがオブジェクトのクラスで定義されている場合、そのメソッドが対応付けられる。
  2. 呼び出しで指定されたメソッド名を持つメソッドがオブジェクトのクラスによって継承されたクラス (クラス階層のさらに上位レベルから継承されたクラスも含む) で定義されている場合、そのメソッドが対応付けられる。
  3. メソッドが見つからない場合は、実行時エラーとなる。