HOME»基本情報技術者試験掲示板»平成30年秋期午後問11
投稿する

[4506] 平成30年秋期午後問11

 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さん(No.3) 
FE ゴールドマイスター
多態性(多相性 や 多様性 とも呼ばれます)の解説はこちら。

> 多態性(ポリモルフィズム)
> オブジェクトへの操作呼び出しが、呼び出し側でなく受け手側の特性で決まる特性。
> 同じメッセージを送っても受け手によって行われる操作が異なる様子のこと。
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日経過したスレッドへの書込みはできません。
© 2010-2024 基本情報技術者試験ドットコム All Rights Reserved.

Pagetop