1、抽象クラス
抽象メソッドを持っているかもしれ抽象クラスを使用して変更
特長:抽象クラスはインスタンス化されていません
特定のサブクラスは、抽象クラスは、(オーバーライドオーバーライド)すべての抽象メソッドの抽象親クラス実装する必要があります継承
)(キルトスーパーのクラスのコンストラクタである抽象クラスのコンストラクタを、
(1)抽象クラス武器、2回の抽象メソッド攻撃(抽象クラス)、移動()定義:これらの2つの方法それぞれの武器の攻撃と移動します。
それぞれ、本方法は、抽象クラスの武器の様々な方法を実装するタンク、Flighter、軍艦の武器は、から継承:(2)は、3つのクラスを定義しました。
(3)軍に代わって、クラス軍を書く:
このクラスは、プロパティには、武器ワット(武装勢力が所有するすべての武器を格納するために使用される)の配列でいる;
クラスもによって、パスの内側のコンストラクタでのコンストラクタを提供そのようなアームの最大数を定義するint型のパラメータが持つことができ、配列Wの大きさと初期化します。
このクラスは、メソッドaddWeapon(武器WA)を提供し、パラメータは、武器がWで表される配列に追加WA示します。
このクラスはまた、二つの方法のattackAll()とmoveAll()を定義するにようにアレイWすべての武器攻撃と移動。
(4)上記の手順をテストするためのmainメソッドを書きます。
パブリッククラス陸軍{ プライベートint型のx; 静的INT Y = 0。 公共軍(int型x)は{ this.x = X。 W =新しい武器[X]。 } 公共INTのgetX(){ Xを返します。 } 武器[] W。 公共のボイドaddWeapon(武器WA){ {(Y == x)の場合 返します。 }他{ W [Y] = WA。 そして++; } } 公共ボイドattackAll(){ 用(INT X = 0; X <Yであり; x ++){ w[x].attack(); } } ます。public void moveAll(){ 用(INT X = 0; X <Yであり; x ++){ W [X] .move()。 } } }
パブリッククラスFlighterは{武器を拡張します @オーバーライド 公共ボイド攻撃(){ System.out.println( "feiji biubiubiu"); } @オーバーライド 公共ボイド移動(){ System.out.println( "feiji qianjin"); } }
パブリッククラス戦車は{武器を拡張します 公共ボイド攻撃(){ System.out.println( "タンクbiubiubiu"); } @オーバーライド 公共ボイド移動(){ System.out.println( "タンクqianjin"); } }
パブリッククラス軍艦は{武器を拡張します @オーバーライド 公共ボイド攻撃(){ System.out.println( "haijunのbiubiubiu"); } @オーバーライド 公共ボイド移動(){ System.out.println( "haijunのqianjin"); } }
パブリック抽象クラスの武器{ 保護された抽象ボイド攻撃(); 保護された抽象ボイド移動(); }
パブリッククラスTest { パブリック静的無効メイン(文字列[] args){ 陸軍軍=新軍(18)。 武器T1 =新戦車(); 武器T2 =新しいFlighter()。 武器T3 =新しい軍艦(); 武器T4 =新戦車(); army.addWeapon(T1)。 army.addWeapon(T2)。 army.addWeapon(T3)。 army.addWeapon(T4)。 army.attackAll(); army.moveAll(); }}
2、インタフェース:インタフェースは、それが反映させる能力を有する、インターフェースプロトコルであります
構文:インターフェースインターフェース宣言を使用して、
(パブリック静的最終修正)のメンバーであってもよいインタフェースには
インタフェースに抽象メソッドの数を有しています
JDK1.8では、デフォルトの方法を提供し、
実装がインタフェースを実装し使用して、インターフェイスには、抽象メソッド(リライト)のすべてを実装する、抽象クラスは、インターフェイスメソッドを実装することができないことを意味し
図1に示すように、インタフェース宣言通話可能(例えば)、歩きやすい(ウォーク)
2、インタフェースクラス宣言、上記二つのインタフェースを達成するための抽象メソッドの実装
3は、テストは、インスタンスをサブクラス、その発言権を呼び出し、徒歩
インタフェースパラメータを使用すると、加算と減算、乗算、除算演算を完了するために、電卓を書くのです。
(1)メソッド計算可能INTコンピュータ(整数nは、整数Mを含むインターフェイスを定義します )。
(2)4つのクラスの設計は、演算を完了するために、それぞれ、このインタフェースを実装します。
(3)クラスUseComputeを設計、クラス、メソッドが含まれています。public int型useCom(計算可能コム、 INT一つは、二つINT)、 この方法は、コンピュータの操作を完了するために、オブジェクトのメソッド呼び出しの上を通過するために使用され、演算結果を出力することができます。
(4)useCom UseCompute演算を完了するために、メインクラステスト、メソッド呼び出しを設計します。
パブリッククラスチューは{Compultableを実装します 公共int型コンピュータ(INT BをINT){ / bを返します。 }}
パブリックインターフェースCompultable { 公共int型コンピュータ(int型N、int型M)。 }
パブリッククラスCompultabletest { パブリック静的無効メイン(文字列[] args){ // TODO自動生成されたメソッドスタブ Usecompultabe usecompultabe =新しいUsecompultabe(); Compultable JIAが新しい嘉を=(); System.out.print(jia.computer(1、2))。 usecompultabe.useCom(JIA、1,2)。 } }
パブリッククラス嘉は{Compultableを実装します 公共int型コンピュータ(INT BをINT){ + bを返します。 } }
パブリッククラス建は{Compultableを実装します 公共int型コンピュータ(INT BをINT){ ABを返します。 }}
抽象クラスインターフェースの差
インターフェイス構文:インターフェースは、同時に静的、抽象メソッド、デフォルトに加えて、複数を達成することができるインタフェースを実装し
、単一継承抽象クラス延びabsttract:抽象クラス
:2、デザイン
インタフェース:の発現を種の能力は、大会
継承階層上に発現するエンティティのための抽象クラスが表示されます。
同じ:1、2をインスタンス化することができない、でき抽象メソッド
図3に示すように、内部クラス(InnerClass)
内部内部、クラス内のメソッド、コードブロック
薄い青のキノコ