オブジェクト指向の説明について
■ このスレッドは過去ログ倉庫に格納されています
0065デフォルトの名無しさん
NGNG「見つからなかった場合、親のほうを探しに行く」ということだ。
さて恒例の仕様変更で、HogeとFooとBarのクラスにhelloworldメソッドを追加することになった。
しかも、全部同じ仕様なんだ。君は「いよいよコピペか?コピペなんだな?」と思うだろうが、それは違う。
こういうときには継承するのが一番だ。
public class HelloWorld {
public void helloworld() {
System.out.println("Hello, ObjectOriented!");
}
}
public class Hoge extends HelloWorld {}
public class Foo extends HelloWorld {}
public class Bar extends HelloWorld {}
これで、hoge.helloworld();のメソッド呼出しを行なうと、
自動的にHoge->HelloWorldとクラスの親方向にさかのぼっていき、
helloworldメソッドを探し出して実行してくれるようになる。コピペはいらないのだ。
もちろん、Hoge側でhelloworldを再定義することで、探しに行かないようにしたうえで
共通のhelloworldとは違う挙動にすることもできる。(これはメソッドのオーバーライドという。)
結局、継承は単なる手抜き手法であるとも言える。しかし、アプリケーション全体に影響を及ぼす
超重要な手抜き手法であるので、実際には今回のように安易に使うべきではない。
しかし、同じ動作をするメソッドを別々のクラスに書いているときには
設計がおかしいことがよくあるので、継承のことを思い出して欲しい。
■ このスレッドは過去ログ倉庫に格納されています