ISO2002MF 

メソッド名段落

メソッド名段落は、この見出し部がメソッド定義を導入していることを示し、メソッドまたはメソッド プロトタイプを示す名前を指定し、メソッドにメソッド属性を割り当てる。

一般形式

構文規則

  1. literal-1 は英数字の定数とし、表意定数は指定できない。
  2. 親のオブジェクトまたはファクトリ定義の作業場所節にデータ名として property-name-1 を指定した場合、そのデータ名のデータ記述項に PROPERTY 句は指定できない。
  3. GET を指定する場合、メソッドの手続き部の見出しには USING 指定パラメーターを記述せず、単一の RETURNING 指定を記述する。
  4. SET を指定する場合、メソッドの手続き部の見出しには単一の USING 指定パラメーターを記述し、RETURNING 指定は記述できない。
  5. STATIC を指定すると、メソッドは静的メソッドになる。つまり、そのメソッドには、クラスのインスタンスではなくクラスを介してアクセスする。
  6. メソッド プロトタイプでは、OVERRIDE は指定できない。
  7. OVERRIDE を指定する場合、このメソッド定義が宣言するメソッドと同じ名前のメソッドがスーパークラスで定義されている必要がある。そのスーパークラスのメソッドは FINAL 句で定義されていてはならない。
  8. OVERRIDE を指定しない場合は以下のようになる。
    1. このメソッド定義がクラス定義に含まれている場合、継承されたメソッドは、このメソッド定義で宣言したメソッドと同じ名前にすることはできない。
    2. このメソッド定義がインターフェイス定義に含まれている場合、継承されたメソッド プロトタイプは、このメソッド定義で宣言したメソッド プロトタイプと同じ名前にすることはできない。
  9. NETJVM REDEFINE を指定する場合、このメソッド定義が宣言するメソッドと同じ名前のメソッドがスーパークラスで定義されている必要がある。
  10. メソッド プロトタイプでは、FINAL 句は指定できない。
  11. method-name-1 または literal-1 が親の定義によって継承されたメソッド名と同じである場合、手続き部の見出し内のパラメーター宣言および戻り項目は準拠規則に従うものとする。これは、このメソッド定義を含む定義が、「手続き部」の章の「パラメーターおよび戻り項目の適合」セクションの記載に従って継承されたすべての定義に準拠するようにするためである。
  12. NETJVM ABSTRACT を指定する場合は、親クラスのクラス名段落でも ABSTRACT を指定する必要がある。
  13. NETJVM ABSTRACT を指定する場合、このメソッドの手続き部は空にする。
  14. NETJVM 静的メソッドでは、ABSTRACT は指定できない。
  15. NETJVM PROTECTED を指定する場合、ABSTRACT は指定できない。
  16. NETJVM FOR 句は、インスタンス メソッドに対してのみ指定できる。
  17. NETJVM interface-name-1 は、現在のクラスが実装しているインターフェイスの名前とする。
  18. NETJVM このインターフェイスには、現在のメソッドと同じ呼び出し情報を持つメソッドを含める必要がある。
  19. NETJVM 属性句については、「ATTRIBUTE、CUSTOM-ATTRIBUTE 句」のトピックに記載されている。

一般規則

  1. メソッド定義で宣言するメソッドの名前は、以下のように決定される。
    1. PROPERTY 句を指定した場合、メソッド名は下記のように設定される。
      1. GET を指定した場合、文字「GET」が、property-name-1 を大文字に変換したものに結合される。
      2. SET を指定した場合、文字「SET」が、property-name-1 を大文字に変換したものに結合される。
    2. PROPERTY 句を指定しない場合、名前は method-name-1 になる。ただし、literal-1 を指定した場合は、運用環境に対して外部化されたメソッドの名前に literal-1 が指定される。
  2. OVERRIDE 指定は、このメソッドが、継承されたメソッドをオーバーライドすることを示す。
  3. NETJVM REDEFINE 指定は、このメソッドが、親メソッドを隠す同じ名前の新しいメソッドを作成することを示す。メソッドを隠すことは、オブジェクトが継承されたクラスのオブジェクトとして記述されている場合は、継承されたメソッドをオーバーライドすることと同じである。ただし、オブジェクトが特定のクラスのオブジェクトとして記述されているが実際には派生クラスのインスタンスを含む場合、そのオブジェクトの記述で参照されているクラスのメソッドが実行される。
  4. FINAL 句は、このメソッドをいずれのサブクラスでもオーバーライドできない

    NETJVM が、再定義はできる

    ことを示す。
  5. メソッドの名前は、このメソッドが定義されているクラスのオブジェクトに対するメソッド呼び出しで参照できる。
  6. 所定の利用者定義語がこのメソッド定義のデータ部および上位のファクトリ定義またはオブジェクト定義のデータ部で定義されている場合、このメソッド内の利用者定義語は、このメソッド内の宣言を参照する。このメソッドから、上位のファクトリ定義またはオブジェクト定義内の宣言は呼び出せない。
  7. GET を指定した場合、このメソッドは property-name-1 のプロパティ取得メソッドとなる。
  8. SET を指定した場合、このメソッドは property-name-1 のプロパティ設定メソッドとなる。
  9. NETJVM PUBLIC を指定または暗黙指定した場合、このメソッドは任意の実行時要素から呼び出せる。
  10. NETJVM PRIVATE を指定した場合、このメソッドは親クラス内からのみ呼び出すことができる。
  11. NETJVM PROTECTED を INTERNAL なしで指定した場合、このメソッドは、親クラス内または親クラスから継承したクラス内からのみ呼び出せる。
  12. NETJVM PROTECTED を INTERNAL 付きで指定した場合、このメソッドは、親クラス内、親クラスから継承したクラス内、または現在の翻訳単位内からのみ呼び出せる。
  13. NETJVM INTERNAL を PROTECTED なしで指定した場合、このメソッドは現在の翻訳単位内からのみ呼び出せる。
  14. NETJVM ABSTRACT を指定した場合、このメソッドは、ABSTRACT ではないすべての派生クラスでオーバーライドする必要がある。
  15. NETJVM CUSTOM-ATTRIBUTE 指定は、指定したカスタム属性をこのメソッドに関連付ける。
  16. NETJVM FOR 句を指定すると、このメソッドは明示的なインターフェイス メンバーの実装になる。このメソッドを明示的に呼び出すことはできない。このメソッドは、インターフェイス型にキャストされているこのクラスのインスタンスで対応するメソッドが呼び出された際に暗黙的に呼び出される。
  17. NETJVM SYNC 修飾子は、メソッドに送られる引数の値をロックするため、メソッドの処理中に引数の値が変わることはない。

    引数がメソッドに送られ、参照パラメーターとして受け取られると、パラメーターの値およびその対応する送信引数が更新されることがある。SYNC 修飾子を使用しない場合、メソッドの処理中に送信引数の値は不明になる。

    メソッドに対する SYNC 修飾子は、SYNC 文でメソッド全体をラッピングすることに等しい。

  18. NETJVM EXTENSION キーワードは、メソッドが拡張メソッドであることを示す。拡張メソッドは、ネストされておらず汎用でもない静的クラスで宣言した静的メソッドとして宣言する。

    EXTENSION を指定すると、STATIC キーワードを省略できる。これは、EXTENSION が STATIC を暗黙指定するためである。

    このメソッドでは、USING 指定の最初のパラメーターは拡張対象のクラスである。これは常に値パラメーターになる。