オブジェクト指向の特徴は、
カプセル化
継承
多態性
であり、これにより、問題を隠蔽、局所化できるというメリットがある。
このありがたさをニートを使って説明してみる。
現実世界では、いろいろと、やりたくないこと、面倒くさいことがあり、そして、ほんのすこし、楽しいことがある。
でも、オブジェクト指向を使えば、楽しい毎日だけが送れる。つらい現実は、隠蔽することが出来る。その方法は、こうだ。
1.カプセル化
世の中を、たのしいことと、めんどっちいことにわける。
たのしいことだけ(お金を使う、テレビゲームをするなど)をまとめ、自分のカプセルのなかにいれ、つらい現実やめんどっちいこと(お金をかせぐ、ごみを捨てに行くなど)は、親のカプセルにいれる。
そうすると、自分のカプセルの中だけは、楽しい現実、
面どっちいことやいやな現実は、親のカプセルの中に隠蔽できる。
こいつがカプセル化。
Javaでは、このカプセルにクラスを使う。
クラスのなかには、
お金を使うなどといった動作、振る舞い(メソッド)のほか、
請求書のようなデータも(フィールド)もある。
いや、動作だけを隠しても、請求書がみえちゃったら、現実に引き戻されてしまうので、そいつも隠蔽する。
2.継承
でも、ニートの子供にしてみては、いやな現実を自分がやらないだけで、だれかに(具体的には親だが)やってもらわないといけない。
そのため、継承というテクニックを使い、代わりにやってもらう人を明示する(extendsで)。
ちなみに、代わりにやってもらうなら、丸投げ(委譲)というテクニックもある。
3.多態性
いまのは、ニートの子供から親を見たが、親の立場から見れば、ニートの子供が何人もいたら(ひえー、かわいそうな親だ)、子供は、長男、次男と別々に存在するが、それぞれ、同じような振る舞い(メソッド)をしてくれないと、一同に面倒を見ることは出来ない。
そこで、子供(現存する子も、これからできる子も)、自分から継承された子供であれば、この振る舞い(メソッド)はするはず!っていうのが必要になる。これが、多態性
ってなかんじにまとめられる?