アカウント名:
パスワード:
ふるーいオブジェクト指向なんてない頃のPGなんで、JAVA詳しくないが、これはできるだろう(正確にはできた(変えた)ように見せかける)
上司「このメソッド名分かりにくいから分かりやすい名前にして」僕「そのメソッドは親クラスのメソッドをオーバーライドしてて変えられないんです」上司「あっそうなんだ…ふーん」
継承した子どものクラスで新しく別の名前メソッド作って、その新メソッドから、自分の親クラスから継承したメソッド呼べばいいんでないの?同じ内容のメソッド2つできちゃうけど。
出来ないんだっけ?
オーバーライドは親クラスのメソッドの動作を置き換えるということ。シグニチャーが異なるのでは意味がない。
>シグニチャーが異なるのでは意味がない。オーバーライドは手段であって目的ではないだろうに。
>このメソッド名分かりにくい時点である程度親クラスの設計間違てるんだし。
>シグニチャーが異なるのでは意味がない。なんて言ってる時点で手段と目的勘違いしてないかい?目的はオーバーライドする事でなく目的の動作をするメソッド作ることだろうに。
子クラスでオーバーライドした元の名前と同じままのメソッドを別の名前のメソッドから呼ぶ。位の機転がなぜ効かないのかね。
親クラスのメソッドがoutput。新規追加するのがwriteToFileメソッド。で、writoToFileからoutputを呼ぶことはできるよ。
けど、writeToFileは誰が実行するの?呼び出し元クラスはoutputしか知らないし、outputしか実行してくれないんじゃね?
>呼び出し元クラスはoutputしか知らないし
そもそも、この話は「新規に作成してるクラス」だろうと。
> そもそも、この話は「新規に作成してるクラス」だろうと。だからでしょ。既存の呼び出し元クラスは親クラスのメソッドは知っててもそんな今新規に作ったクラスのメソッドなど知らんよ。
だから、何で既存の呼び出し元クラスが「今作られた新規クラスを呼ぶのかと」
新規クラスと認識してるなら新規メソッド呼ぶし、親クラス読んでるならそもそも新規クラス関係ないだろと。
次のような処理を例として考えます。■処理-----------------------1. データを読込む(※)2. データを加工する3. 結果をDBに書込む4. 終了ログを出力する※但し、読込むデータの形式は、CSVとDBの2種類の処理があります。※読込形式のみ違い。後の処理は同じ。-----------------------
入力形式だけが違うので、次のようなクラスを実装します。■データ読込クラス-----------------------【親】Readerクラス ※readメソッド:実装は空っぽ。【子】CsvReaderクラス ※readメソッド:CSVファイルを読込む処理を実装。【子】DbReaderクラス ※readメソッド:DBから読込む処理を実装。-
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
ナニゲにアレゲなのは、ナニゲなアレゲ -- アレゲ研究家
リンク先で。。。 (スコア:0)
ふるーいオブジェクト指向なんてない頃のPGなんで、
JAVA詳しくないが、これはできるだろう(正確にはできた(変えた)ように見せかける)
上司「このメソッド名分かりにくいから分かりやすい名前にして」
僕「そのメソッドは親クラスのメソッドをオーバーライドしてて変えられないんです」
上司「あっそうなんだ…ふーん」
継承した子どものクラスで新しく別の名前メソッド作って、その新メソッドから、自分の親クラスから継承したメソッド呼べばいいんでないの?同じ内容のメソッド2つできちゃうけど。
出来ないんだっけ?
Re: (スコア:0)
オーバーライドは親クラスのメソッドの動作を置き換えるということ。
シグニチャーが異なるのでは意味がない。
Re: (スコア:0)
>シグニチャーが異なるのでは意味がない。
オーバーライドは手段であって目的ではないだろうに。
>このメソッド名分かりにくい
時点である程度親クラスの設計間違てるんだし。
>シグニチャーが異なるのでは意味がない。
なんて言ってる時点で手段と目的勘違いしてないかい?
目的はオーバーライドする事でなく目的の動作をするメソッド作ることだろうに。
子クラスでオーバーライドした元の名前と同じままのメソッドを別の名前のメソッドから呼ぶ。
位の機転がなぜ効かないのかね。
Re: (スコア:0)
親クラスのメソッドがoutput。
新規追加するのがwriteToFileメソッド。
で、writoToFileからoutputを呼ぶことはできるよ。
けど、writeToFileは誰が実行するの?
呼び出し元クラスはoutputしか知らないし、outputしか実行してくれないんじゃね?
Re: (スコア:0)
>呼び出し元クラスはoutputしか知らないし
そもそも、この話は「新規に作成してるクラス」だろうと。
Re:リンク先で。。。 (スコア:0)
> そもそも、この話は「新規に作成してるクラス」だろうと。
だからでしょ。
既存の呼び出し元クラスは親クラスのメソッドは知っててもそんな今新規に作ったクラスのメソッドなど知らんよ。
Re: (スコア:0)
だから、何で既存の呼び出し元クラスが「今作られた新規クラスを呼ぶのかと」
新規クラスと認識してるなら新規メソッド呼ぶし、親クラス読んでるならそもそも新規クラス関係ないだろと。
Re: (スコア:0)
次のような処理を例として考えます。
■処理
-----------------------
1. データを読込む(※)
2. データを加工する
3. 結果をDBに書込む
4. 終了ログを出力する
※但し、読込むデータの形式は、CSVとDBの2種類の処理があります。
※読込形式のみ違い。後の処理は同じ。
-----------------------
入力形式だけが違うので、次のようなクラスを実装します。
■データ読込クラス
-----------------------
【親】Readerクラス ※readメソッド:実装は空っぽ。
【子】CsvReaderクラス ※readメソッド:CSVファイルを読込む処理を実装。
【子】DbReaderクラス ※readメソッド:DBから読込む処理を実装。
-