20.2.8 オブジェクト指向によるポリモルフィズム
ポリモルフィズムとは,一つのメッセージに対して異なる処理をすることを許す機能です。オブジェクト指向機能では,メソッドの呼び起こし(INVOKE文)でポリモルフィズムができます。これは,「あるオブジェクト参照は,それに適合するオブジェクトのメソッドを呼び起こせる」というオブジェクト参照の特徴を利用したものです。
ポリモルフィズムの使用例を,次に示します。
- (例)
-
「20.2.5 オブジェクト指向による継承」の「(2) 継承の使い方」の例の場合,クラスの継承関係は,次のようになっています。
「預金口座」クラス←「普通預金口座」クラス←「当座預金口座」クラス
(A←Bは,BがAを継承することを表します)
また,「引き出し」メソッドは,オブジェクトごとに次のようになっていて,それぞれの「引き出し」メソッドの処理内容は異なります。
-
普通預金口座が実装する「引き出し」メソッド
預金口座から継承したメソッド
-
当座預金口座が実装する「引き出し」メソッド
当座預金口座で実装したメソッド
-
DATA DIVISION. WORKING-STORAGE SECTION. 01 HA USAGE OBJECT REFERENCE 預金口座. *> 1. : PROCEDURE DIVISION. : IF 要求 = 普通預金処理 *> 2. INVOKE 普通預金口座 'NEW' RETURNING HA ELSE INVOKE 当座預金口座 'NEW' RETURNING HA END-IF. : INVOKE HA '引き出し'. *> 3.
-
継承関係による適合によって,普通預金口座と当座預金口座の両方が適合している預金口座クラスを指定したオブジェクト参照を使います。
-
要求によって,普通預金口座を使うか当座預金口座を使うか切り分けます。
-
HAが指すオブジェクトにより,異なる「引き出し」メソッド(普通預金口座のメソッドまたは当座預金口座のメソッド)を実行できます。