アカウント名:
パスワード:
ふるーいオブジェクト指向なんてない頃のPGなんで、JAVA詳しくないが、これはできるだろう(正確にはできた(変えた)ように見せかける)
上司「このメソッド名分かりにくいから分かりやすい名前にして」僕「そのメソッドは親クラスのメソッドをオーバーライドしてて変えられないんです」上司「あっそうなんだ…ふーん」
継承した子どものクラスで新しく別の名前メソッド作って、その新メソッドから、自分の親クラスから継承したメソッド呼べばいいんでないの?同じ内容のメソッド2つできちゃうけど。
出来ないんだっけ?
オーバーライドは親クラスのメソッドの動作を置き換えるということ。シグニチャーが異なるのでは意味がない。
>シグニチャーが異なるのでは意味がない。オーバーライドは手段であって目的ではないだろうに。
>このメソッド名分かりにくい時点である程度親クラスの設計間違てるんだし。
>シグニチャーが異なるのでは意味がない。なんて言ってる時点で手段と目的勘違いしてないかい?目的はオーバーライドする事でなく目的の動作をするメソッド作ることだろうに。
子クラスでオーバーライドした元の名前と同じままのメソッドを別の名前のメソッドから呼ぶ。位の機転がなぜ効かないのかね。
親クラスのメソッドがoutput。新規追加するのがwriteToFileメソッド。で、writoToFileからoutputを呼ぶことはできるよ。
けど、writeToFileは誰が実行するの?呼び出し元クラスはoutputしか知らないし、outputしか実行してくれないんじゃね?
「writeToFileからoutputを呼ぶ」ってのは方向が逆ですね。「outputからwriteToFileを呼ぶ」ようにすればいいんです。
C++的に書くなら、ヘッダで
virtual void output() override { writeToFile(); }void writeToFile();
とかしておいて、ソースの方ではwriteToFileの実装だけ書く。
#似たようなことはちょくちょくやってますが、名前が気に入らないといった理由でやったことはないなぁ…
Template Method パターン?
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
※ただしPHPを除く -- あるAdmin
リンク先で。。。 (スコア:0)
ふるーいオブジェクト指向なんてない頃のPGなんで、
JAVA詳しくないが、これはできるだろう(正確にはできた(変えた)ように見せかける)
上司「このメソッド名分かりにくいから分かりやすい名前にして」
僕「そのメソッドは親クラスのメソッドをオーバーライドしてて変えられないんです」
上司「あっそうなんだ…ふーん」
継承した子どものクラスで新しく別の名前メソッド作って、その新メソッドから、自分の親クラスから継承したメソッド呼べばいいんでないの?同じ内容のメソッド2つできちゃうけど。
出来ないんだっけ?
Re: (スコア:0)
オーバーライドは親クラスのメソッドの動作を置き換えるということ。
シグニチャーが異なるのでは意味がない。
Re: (スコア:0)
>シグニチャーが異なるのでは意味がない。
オーバーライドは手段であって目的ではないだろうに。
>このメソッド名分かりにくい
時点である程度親クラスの設計間違てるんだし。
>シグニチャーが異なるのでは意味がない。
なんて言ってる時点で手段と目的勘違いしてないかい?
目的はオーバーライドする事でなく目的の動作をするメソッド作ることだろうに。
子クラスでオーバーライドした元の名前と同じままのメソッドを別の名前のメソッドから呼ぶ。
位の機転がなぜ効かないのかね。
Re: (スコア:0)
親クラスのメソッドがoutput。
新規追加するのがwriteToFileメソッド。
で、writoToFileからoutputを呼ぶことはできるよ。
けど、writeToFileは誰が実行するの?
呼び出し元クラスはoutputしか知らないし、outputしか実行してくれないんじゃね?
Re:リンク先で。。。 (スコア:1)
「writeToFileからoutputを呼ぶ」ってのは方向が逆ですね。「outputからwriteToFileを呼ぶ」ようにすればいいんです。
C++的に書くなら、ヘッダで
とかしておいて、ソースの方ではwriteToFileの実装だけ書く。
#似たようなことはちょくちょくやってますが、名前が気に入らないといった理由でやったことはないなぁ…
Re: (スコア:0)
Template Method パターン?