今日は、参照コンテンツを含むJavaの抽象クラスとインターフェイスについての私自身の理解について説明します。
1。要約クラス
1。定義:
パブリックアブストラクトクラスのクラス名{}
Java言語のすべてのオブジェクトはクラスで説明されていますが、すべてのクラスがオブジェクトを記述するために使用されるわけではありません。私が理解している抽象クラスは、実際には、属性や行動を含む同じタイプのものの公共部分の高度な抽出です。たとえば、牛、羊、豚にはすべての公共の属性があり、公共の行動はすべて母乳であるため、属性、髪、行動を含む哺乳類に公共の部分を抽象化できます。牛、羊、豚が哺乳類を継承すると、母乳育児の機能もあります。この関数を完了する方法については、自分で実装する必要があります。
2。機能
(1)抽象キーワードによって変更されたクラスは、抽象クラスです。
(2)抽象的なメソッドを含むクラスは抽象クラスでなければなりませんが、抽象クラスには必ずしも抽象的なメソッドが含まれているわけではありません。抽象的な方法は公開または保護されている必要があります。そうしないと、サブクラスで継承することはできません。デフォルトは公開されています。
(3)抽象的なメソッドには実装がありません。そうしないと、コンパイルが報告されます。
(4)抽象クラスで独自のメンバー変数とメンバーメソッドを定義できます。
(5)サブクラスが抽象クラスを継承する場合、抽象クラスのすべての抽象的なメソッドを実装する必要があります。そうしないと、サブクラスも抽象クラスとして定義する必要があります。
(6)要約クラスをインスタンス化することはできません。
3.上記の規定が実際に述べられているかどうかを確認してください
これはWordで編集された検証表です。私はそれを画像に切り取り、ここに置いてください。
上記の図で検証から判断すると、それらの理論は正しいです
2。インターフェイス
1。定義:
パブリックインターフェイスインターフェイス名{}
インターフェイスは、メソッドを提供するために使用されます。私の理解によると、それは複数のクラスの公共行動の高レベルの抽出です。たとえば、すべての動物の公的な行動は食べて眠っています。次に、これら2つの動作を1つのインターフェースで抽出およびカプセル化できます。動物がこの動作を実行する必要がある場合は、インターフェイスを呼び出してから、独自のクラスで特定の実装を完了してください。この理解は抽象クラスと違いはないようですので、次の例を見てみましょう。これらの2つの動作が抽象クラスに配置されている場合、抽象クラスにはraw索の動作もあります。この時点で、ヘビなどの爬虫類がこのクラスを継承すると、食事、睡眠、rawう3つの方法が実現するため、食事、睡眠、rawりの機能があります。しかし、空飛ぶクラスの動物が鳥のようなものである場合、この方法を継承するとき、それはまた、食事、睡眠、rawりの機能を持っています。クロールが必要な機能ではなく、少し矛盾していることは明らかです。ただし、食事と睡眠のインターフェースのみを継承する場合、食事と睡眠の基本的な機能があります。登山と飛行に関しては、それらを抽象化して抽象クラスに配置し、オンデマンドで継承し、必要な機能を実現することができます。
2。機能:
(1)インターフェイスには独自のメンバー変数を持つことができますが、それらはパブリックスタティックファイナルとして暗黙的に指定され、パブリックスタティックファイナルのみになります。インターフェイス内のすべてのメソッドは抽象的なメソッドであり、パブリックアブストラクトとして暗黙的に指定されます。
(2)インターフェイスでは抽象的なメソッドのみが定義されており、具体的な実装はありません。
(3)インターフェイスを実装するクラスは、インターフェイスで定義されているすべてのメソッドを実装する必要があります。
3.上記の理論が正しいかどうかを確認します
同様に、上記の理論はすべて正しいです!
3。抽象クラスとインターフェイスの違い:
1.抽象クラスには、独自のメンバーメソッドと特定の実装を持つことができます。インターフェイスには抽象的なメソッドのみを含めることができます。
2。要約クラスには、さまざまなタイプのメンバー変数を含めることができます。インターフェイス内のメンバー変数は、公共の静的な最終的なものにのみであることができます。
3.クラスは1つの抽象クラスのみを継承できますが、複数のインターフェイスを実装できます。
4。要約クラスには、静的コードブロックと静的メソッドを含めることができます。静的コードブロックと静的メソッドは、インターフェイスで定義できません。
クラスが1つの抽象クラスのみを継承できるが、複数のインターフェイスを実装できることを確認します
まず、2つの抽象クラスを定義します:ミマルの哺乳類とクローラーの爬虫類クラス
/** * @createtime 2017年3月17日午前10時33分27 am * @description哺乳類 */パブリックアブストラクトクラス哺乳類{パブリックストリングフード;パブリックアブストラクトボイドナース();パブリックボイドイート(ストリングフード){this.food; system.out.println( "eat"+foods);};};} /** * * @createtime 2017年3月17日午前11時23分19時 * @description抽象クラスを定義 - クローラークラス */パブリックアブストラクトクラスクローラー{public abstract void crawl();}第二に、2つのインターフェイスを定義します。1つはベースアションの基本インターフェイスです。もう1つは、SpecialAction Special Interfaceです
/** * * @Createtime 2017年3月17日11:03:42 AMに * @description基本的な動作という名前のインターフェイスを定義 */publicインターフェイスBaseAction {public String name = ""; public void Sleep(); public void Sleep();} /*** @createtime 2017年3月17日午前11時24分56 am* @description特別な行動を実装するインターフェイスを定義します*/publicインターフェイスSpecialAction {public void Study();}次に、基本的なクラスの人々を定義し、ママのクラスを継承し、基本インターフェイスと特別なインターフェイスを実装します
/** * @createtime 2017年3月17日午前11時25:48 am * @description共通のクラスを定義します - 人間、哺乳類の継承、基本的なインターフェイスと特別なインターフェイスを実装 */公共クラスの人々は哺乳類を拡張します。自動生成方法スタブ} @Override public void sleep(){// todo auto-enerated method stub} @override public void nurse(// todo auto-enerated method method stub}}}サブクラスは複数のインターフェイスを実装できることがわかります。
最後に、基本的なクラスの人々に、ママルスのクラスとクローラーのクラスを同時に継承してもらいましょう
/** * @createtime 2017年3月17日午前11時25:48 am * @description共通のクラスを定義します - 人間、哺乳類の継承、基本的なインターフェイス、特別なインターフェイスを実装 */公共クラスの人々は哺乳類を拡張します。
要約します
上記は、Javaの抽象クラスとインターフェイスの個人的な理解について簡単に議論することについてのこの記事のすべての内容です。私はそれが誰にでも役立つことを願っています。興味のある友達は引き続きこのサイトを参照できます:
春の豆の継承と抽象的なコードの例
Hibernateのコアアイデアとインターフェイスの紹介
Javaのインターフェースと使用方法の例
欠点がある場合は、それを指摘するためにメッセージを残してください。このサイトへのご支援をありがとうございました!