まず、なぜインタフェースが必要なのでしょうか? クラスは親クラスを継承するJava、ほとんど彼らは親クラスから継承することができ、スケーラビリティは一定の制限の対象となりますが、この欠点を補うために、Javaはまた、インタフェースと呼ばれる新しい参照データ型の分類を、提供します。 クラスは親クラスから継承することができますが、複数のインタフェースを実装することができます。
第二に、定義およびインターフェースの使用: 1 インターフェイスを定義:interfaceキーワードを使用して。 2 。インタフェースを実装する抽象クラスでまたはクラスは、キーワードを実装することによって実現することができます。
第三に、インターフェース注: 1つのインタフェースは、抽象クラス「クラス」、(かかわらず抽象キーワード変更するかどうかの)すべてのメソッドが抽象である界面より抽象的です。 2 クラスは、抽象クラスを継承するか、インタフェースを実装する場合、クラスの2つの選択肢を有している、いずれかの抽象クラスとして(親クラスまたは抽象メソッドインタフェースを実装することができない)自体を宣言するために、
または親クラスまたはインタフェースを実現しますすべての抽象メソッド。 3 。抽象クラスとインタフェース、すなわち、オブジェクトの抽象クラスとインタフェースを作成しないで、インスタンス化することはできませんされています。 4 。インタフェースメンバ変数(属性、フィールド)のうち静的一定でなければならない、と割り当てながら、パブリック修飾を使用します。 パブリック 静的 最終的な文字列名=「」; 5.インタフェースが再び(達成されない実装)他のインターフェイス、継承キーワードを拡張するインタフェースするために使用することができる、及び継承できる複数のインターフェース 6 抽象クラスのコンストラクタを書くことができるが、インターフェース。あなたはコンストラクタを書くことはできません
第四に、インタフェースを使用する利点:
1は、より多くの「継承」の効果を達成することができ、Javaのためのサプリメントは、欠陥の単一継承、Javaコードのスケーラビリティが可能です。
2 、インターフェースの使用は、開発チームのコラボレーションをより助長、デザイン(プロパティとメソッドは、インターフェイスで定義されている)と分離(インターフェイスメソッドの実装)を満たすことができます。
デザインは、企業や組織で完了することができ、かつ実装がはるかにあります達成するために、会社や組織。
。3 、JDBC、Javaのウェブが第一インターフェースのプロパティとメソッドで定義され、各データベースベンダーの実装のJDBCインタフェース、定義された抽象クラスの抽象メソッド、
インターフェース(例:Tomcatの)ののJavaウェブ実装は、要約のJavaウェブインターフェースを実装しました抽象メソッドが定義されました。
4は、より自然なポリモーフィズムを実現しています。 5、呼び出し側は達成する方法の詳細については気にしないことがあり、ちょうどこの方法の問題に注意を喚起する際に知っておく必要があることができる
パラメータの種類を必要とする場合、必要に、パラメータを渡すかどうか、(; B、メソッドを実行する場合は、値を返すかどうか値の種類があり、界面が観察されるCは、抽象クラスでは、クラスを実装しています)
第五に、多型は何ですか?
親型(インタフェース、抽象クラス、実装クラスは、)多型と呼ばれるオブジェクト(例えば、参照)サブクラスの複数を参照することができます。
/ ** *インターフェイスを定義:インタフェースは、いくつかのプロパティとメソッドを提供します * * / パブリック インターフェイスUsbの{ パブリック 静的 最終的な文字列名=「」; / ** *インターフェイスのメソッドは抽象メソッドで、プラス抽象的なキーワード缶なし *【ご使用方法 * / 公共 ボイド使用(); / ** *情報を表示する方法に * @Paramの名前:名表示 * / 公共 ボイドビュー(文字列名)。 / ** *メソッドプリントアウト。 * / 公共 ボイドプリント(); }
/ ** *クラスを定義:USBインターフェイスを実現するために クラスは抽象クラスを継承するか、インタフェースを実装した場合*、クラスには2つの選択肢があり、どちらか(親クラス、抽象メソッドまたはインタフェースを達成することはできません)抽象クラスとしての地位を宣言するために、 *親クラスまたはインタフェースや実装のすべての抽象メソッド。 * / パブリック クラス UsbMouseは、実装のUSB { @オーバーライド 公共 ボイド使用(){ (のSystem.out.println「USBマウスの使用()コンテンツ出力方法」)。 } @オーバーライド 公共 ボイドビュー(文字列名){ System.out.println(「ビューのUSBマウス()コンテンツ出力方法」)。 } @オーバーライド 公共 ボイドプリント(){ (System.out.printlnは「コンテンツ出力のUSBマウスプリント()メソッドの」)。 } }
/ ** *クラスを定義:USBインターフェイスを実現するために * /
パブリック クラス UsbFanは、実装のUSB { @オーバーライド 公共 ボイド使用(){ System.out.println(「使用のUSBファン()コンテンツ出力方法」)。 } @オーバーライド 公共 ボイドビュー(文字列名){ System.out.println(「ビューのUSBファン()コンテンツ出力方法」)。 } @オーバーライド 公共 ボイドプリント(){ System.out.println(「USBプリントのファン()コンテンツ出力方法」)。 } }
パブリック クラス{usbtestを パブリック 静的 ボイドメイン(文字列[]引数){ // 基準点は、親タイプのオブジェクト(例えば、参照)多型と呼ばれるサブクラスの複数であってもよいです。 = USBのUSB 新しい新usbmouse(); USB usbfan = 新しいUsbFan(); usb.use(); usbfan.use(); } }