平成30年秋期午後問11
ringoさん
(No.1)
https://www.fe-siken.com/kakomon/30_aki/pm11.html
applyメソッドの動きがわかりません。
このメソッドの最終行ではFragmentインターフェースのreplaceメソッドを呼び出しているように見えます。
しかし、実際の処理はReplacerクラスのreplaceメソッドかPassThroughクラスのreplaceメソッドのどちらかを呼び出して行われると解釈しました。
どのような流れで文字の置換をしているのでしょうか。
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
https://www.fe-siken.com/kakomon/29_aki/q7.html
具体例で言うなら,
new [b PassThrough(buf) ] で生成されたオブジェクトに対して.replace()を呼び出したのなら
PassThroughクラスの.replace()が呼び出されますし,
new [c Replacer(buf) ] で生成されたオブジェクトに対して.replace()を呼び出したのなら
Replacerクラスの.replace()メソッドが呼び出されます。
> 多態性(ポリモルフィズム)
> オブジェクトへの操作呼び出しが、呼び出し側でなく受け手側の特性で決まる特性。
> 同じメッセージを送っても受け手によって行われる操作が異なる様子のこと。
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日経過したスレッドへの投稿はできません。
広告