やっと開発で自分の継承、多態を使いました

2483 ワード

*継承、マルチステートについてはjavaを学んだことがある人はよく知っていると思いますが、オブジェクト向けの3つの特性を思い出してみましょう.パッケージ、継承、マルチステートです.しかし、私たちが以前学んだのは主に継承とは何か、そして私たちがどのように継承を書くか、javaの中でextendsを使って、c++の中で使っています:、しかし、私たちが勉強した後に書くだけかもしれませんが、病気がどのように使っていないことに気づきました.特に開発を始めたばかりの頃、私たちは継承を使う必要があっても、私たちはどのように使うか分かりませんでした.ここでは私の例で開発での使用を継承します.
この間、私は蛇を書くことを勉強していました.蛇を食べるゲームを書くとき、私はほとんど半分の継承を使っていません.私もとても使いたいですが、いつ使うべきか、あるいはどのように使うべきか分かりません.だから、蛇を食べるゲームのレンガとりんごを書いていたのを覚えています.また境界があるときは(この3つは1つの色のブロックにすぎないので)継承したいと思っていましたが、最後に書き終わったらif-elseで判断したので、コードの可読性が大幅に低下しました.例えば、メインインタフェースでこの3つのものを描きたいと思っていました.私の以前のやり方は:
{

 List edg;//  
 edg.add(...);
 List block;//  
 block.add();
 List apple;//  
 //      draw    
 for{
 block.draw();
 }
 ..
 ..

}

このように書くと機能を実現することができるが,このような実現方法は間違いなく面倒であり,コードの冗長性を増加させる.私も後でこのように書くのがよくないと思って、だから私は策略を変更して、これらをすべて1つのColorBlockクラスに統合して、このようにすればみんなはdrawの方法について書き直すだけでいいです.
実現はおおよそ次の通りである
class ColorBlock {


  draw();//    ,    ,     
}
class Block extends ColorBlock{
  darw(){};//Block draw   
}

class Apple extends ColorBlock{
  darw(){};//Apple draw   
}
....

このような定義を経て、私たちは絵を描くときに簡単になりました.
List cblock;
cblock.add(new Block());
cblock.add(new Apple());
for(){
  cblock.draw();
}

このように書くのはちょっと面倒ですが、実はかなり使い心地がよくて、これから新しい要素を加えるには、ColorBlockを継承して、そのリストに加えるだけでokになります.爽哉ではありませんか.拡張性を増やして、コードを筋道立てて見えます.
上は私がこのケースで継承と多態使用についてまとめたもので、総じて同じタイプのものを1つの親やインタフェースに抽象化し、その中に抽象的な方法を増やして、それからサブクラスがそれらの方法を実現するということです.そうすると、使用するときに親で子オブジェクトを指すだけで、残りのjavaが手伝ってくれます.彼がAppleかBlockだと判断する必要はありません.javaが手伝ってくれました.