平成30年秋期午後問11

午前試験免除制度対応!基本情報技術者試験のeラーニング【独習ゼミ】
ringoさん  
(No.1)
https://www.fe-siken.com/kakomon/30_aki/pm11.html
applyメソッドの動きがわかりません。
このメソッドの最終行ではFragmentインターフェースのreplaceメソッドを呼び出しているように見えます。
しかし、実際の処理はReplacerクラスのreplaceメソッドかPassThroughクラスのreplaceメソッドのどちらかを呼び出して行われると解釈しました。
どのような流れで文字の置換をしているのでしょうか。
2022.10.19 21:32
ringoさん  
(No.2)
すみません、「Fragmentインターフェースのreplaceメソッドを呼び出している」は勘違いでした。
後半部分について、どうやって分岐しているのかを教えていただきたいです。
2022.10.19 21:39
jjon-comさん 
FE ゴールドマイスター
(No.3)
多態性(多相性 や 多様性 とも呼ばれます)の解説はこちら。

> 多態性(ポリモルフィズム)
> オブジェクトへの操作呼び出しが、呼び出し側でなく受け手側の特性で決まる特性。
> 同じメッセージを送っても受け手によって行われる操作が異なる様子のこと。
https://www.fe-siken.com/kakomon/19_aki/q44.html

> オーバライド(Override)は、上位クラスで定義されたメソッド(メンバ関数)を、
> 下位クラス側の役割に応じて再定義し動作を変更することです。
> オブジェクト指向ではこの方法によって「同じメッセージを送っても
> オブジェクトごとに異なる操作が行われる」特性である多相性を実現しています。
https://www.fe-siken.com/kakomon/29_aki/q7.html

具体例で言うなら,

new [b PassThrough(buf) ] で生成されたオブジェクトに対して.replace()を呼び出したのなら
PassThroughクラスの.replace()が呼び出されますし,

new [c Replacer(buf) ] で生成されたオブジェクトに対して.replace()を呼び出したのなら
Replacerクラスの.replace()メソッドが呼び出されます。
2022.10.19 22:34
ringoさん  
(No.4)
非常にわかりやすい回答をありがとうございます、勉強になりました。
2022.10.20 00:37

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの書込みはできません。

その他のスレッド


Pagetop