abstractについて

5日でJavaをマスターしてくれ^^
ほいw
2冊のJava解説本を渡される。





そこから始まった俺のプログラム人生でございますが


ほんとに5日でやってのけたので
記憶が飛ぶのも早かった。


Abstractに然り。


今回のプロジェクトではAbstractが多く登場する

復習もかねて、調べなおしてみた。



「abstractはクラス・メソッド宣言時に付与し、クラス・メソッドを抽象クラス(abstractクラス)・抽象メソッド(abstractメソッド)として宣言します。抽象クラスはそのクラス自身のオブジェクトを生成することはできません。通常抽象クラスは実装のないいくつかの抽象メソッドを持っています。抽象クラスをサブクラスで継承し、そのサブクラス内で抽象クラスで実装されていない抽象メソッドを実装(オーバーライド)しオブジェクトを生成する形をとります。 」
                             ※参照:Javaの道

比較的わかりやすく、トータルして色々データがおいてあるJavaの道ですら
この有様です。


「俺は日本語をやめるぞジョー!!!!」



つまり、日本語訳すると
・abstractってクラス宣言時に付け加えると、大まかな設計書みたいな扱いになる。
・abstractで、はしょって書いたメソッドには対応するabstractメソッドを別のクラスに宣言して、そのabstractがついた大まかな設計書に対してextendを張る。
・abstract自体ではオブジェクトは作成できませんよ。

ってことですな。


なんでこんなことするかっていうと、オブジェクト指向につながるきがするんですが
たとえば、Javaの道のたとえ話を使わせてもらうとですね。



車をつくるとすると
abstractで車の設定を書いていきます。



abstract class 車 {

窓メソッド(){
hogehoge
}

ハンドルメソッド(){
hoge
}

abstract エンジンメソッド()

abstract 車体メソッド()

}

こんな感じですね。

これは車っていう大まかな設計書ですな。


これに対して、この車を特徴付けるクラスを作るわけです。


 class フェラーリ extend 車{

 エンジンメソッド(){
hoge
}

車体メソッド(){
hoge


共有化できる窓やハンドルなんかはextendしてる車を使い
特徴付けるエンジン、車体なんかはフェラーリクラスで設定してます。

こんな感じで、処理の効率化をはかるわけですなぁ。


考えた人かしこいわー。



あくまで、自分が捕らえたイメージなので、違う場合は自分のためにもなるので
どんどん突っ込みください。それに対応して修正いれまっす