このセクションの話抽象インタフェースと抽象キーワード 抽象クラスとメソッドを変更することができます
修飾されたメソッドが抽象メソッドと呼ばれている:メソッドは、メソッド構造体(ない括弧()メソッドではないネイティブ改変方法ボディではなく、抽象メソッドの一部ではない)、抽象クラスのメソッドは、抽象クラスまたはインタフェースに変更されなければなりません。
抽象修正クラスは抽象クラスであり、必ずしも抽象メソッドを持たない抽象クラス、
抽象クラスは、抽象クラスを継承することができ、一般的なカテゴリ(深刻そうに乾燥していない)
抽象クラスは必ずしも抽象メソッドが含まれていませんが、クラスの抽象メソッドが抽象クラスである必要がありますがあります。
// インタフェースはインスタンス化できないと何のコンストラクタがブロックしていないことができません // インターフェースはクラスでも、複数のインタフェースを実装することができ、複数のインターフェイスを継承することができます 。// 暗黙的に抽象あるとき、抽象デフォルトを書き込みませインタフェースを宣言し 、パブリック 抽象 インターフェース InterfaceAnimal 拡張します、B { // 属性のデフォルトインタフェースは、静的、最終的な公共変更された //は、最終的な変更された属性です割り当てる必要が 公共の 静的な 最終文字列名=「人を」; // インターフェイスのメソッドは抽象メソッドですが、デフォルトでは共有されていないにも書き込まれ抽象パブリック修飾 // 戻り値は同じでなければならないときに方法を実装クラスインターフェース パブリック 抽象(EAT文字列); } インターフェース{ ボイドSLEEP(文字列名); } インターフェースB { 空の話(); }
// 抽象クラスは、抽象クラス、抽象クラスに変更と呼ばれている // それがインスタンス化されている場合、それはコンパイラが渡すことはできません、エラーになり、抽象クラスは(間違いを犯しやすい初心者)をインスタンス化することはできません。唯一の抽象クラス非抽象サブクラスは、オブジェクトを作成することができます。 // 抽象クラスは必ずしも抽象メソッドが含まれていませんが、抽象クラスでなければならないクラスの抽象メソッドがあります。 抽象 クラス TestAbstact 実装InterfaceAnimal { // 抽象クラス属性、静的変数、定数、ブロック含んでいてもよい 静的ブロック 、文字列名 静的文字列のアドレス、 最終 INT。番号= 1 ; // 抽象クラスのコンストラクタメソッド、スタティックメソッド、一般的な方法を含んでもよく、最終的な修正方法 // 抽象クラスコンストラクタメソッドのみ使用サブクラスによって継承することができる呼び出すことはできません // (静的メソッドで変性)抽象コンストラクタメソッド、クラスメソッド宣言できません。 パブリックTestAbstact(){} 公共 TestAbstact(INT A){ System.out.println(A); } // 静的メソッド // 静的メソッドが抽象メソッド、クラス名に直接静的メソッドなしメソッド本体を呼び出すことができない パブリック 静的 ボイドteststaticmethodを(){ System.out.printlnは(「I静的メソッド「です;) } // 一般的な方法 公共 ボイドの話(){ System.out.printlnはは(私はインターフェイスのメソッドの実装を話す、それは「今一般的なアプローチである」); } // 抽象メソッドが抽象メソッドでありますいかなるメソッド本体ない({}この方法は混同しないように、メソッド本体が全く体含有量を有していないと呼ばれる) パブリック 抽象文字列(EAT); // オーバーロード抽象メソッド パブリック 抽象 ボイドを(文字列名)EAT; //サブクラスの継承(または実現)すべてのメソッドはパブリックメソッドのみを変更するために、公開許可することができている親クラス(インターフェース)抽象メソッド、インターフェースを開くためのより多くの権限を置く必要があります // 抽象クラスは、抽象メソッドを継承する(または実現しました)以下の特定の実装のコード書いていない 公共 ボイド睡眠(文字列名){ System.out.printlnは(「抽象クラスのメソッドを眠っている」の); ;} } // サブクラス普通のクラスは抽象クラス(インタフェース)は、すべての必要継承抽象メソッドは、インターフェイスの抽象メソッドをオーバーライドする抽象クラスを継承して含まれている // サブクラスでも抽象クラスでない限り、抽象クラスのサブクラスは、抽象クラスの抽象メソッドの特定の実装を与える必要があります。 クラスは SunTestAbstact 延びTestAbstact { 文字列名 =」1" ; // 抽象親クラスを実装する必要が パブリック{)文字列(EAT のSystem.out.println(『サブクラスのメソッドを食べる』); 戻り『バック値は、食べるために』; } // 抽象親クラスを実装する必要がオーバーロード 公共 ボイドは(文字列名){EAT のSystem.out.println(名); } // 抽象インタフェースのメソッドは、親クラスを実装する必要は親クラスが行うとのインターフェイスの継承を継承します実装サブクラスが再び達成するために必要のない 公共 ボイド睡眠(文字列名を){ System.out.printlnはは(「サブクラスは、抽象クラスのメソッド睡眠を継承」;) } // インタフェースは親クラスを実装する必要があるインターフェイスの継承を継承します方法抽象 公共 ボイドトーク(){ System.out.printlnは(「議論サブクラス」); } } // 一般的なクラス のパブリック クラスAbstractClass { 公共 静的 ボイドメイン(文字列[]引数){ SunTestAbstact日 = 新しいSunTestAbstact(); System.out.println( "123" )。 } // InterfaceAnimalを実装 }
1.定義A、B及び二つのインターフェース
2、InterfaceAnimalは、インタフェースA、Bインターフェイス継承
、3抽象クラスTestAbstact InterfaceAnimalを継承
。4、一般的なカテゴリSunTestAbstact抽象クラスを継承