検索
ホームページJava&#&チュートリアルJava の基本 - 抽象クラスとインターフェイス

Java の基本 - 抽象クラスとインターフェイス

Jun 26, 2017 am 11:31 AM
javaベース抽象的なインターフェース

抽象クラスとインターフェイスが一緒に扱われる理由は、それらが区別するのが難しく、互いに独立しているためです。 Java プログラミングの 3 つの主要な特徴 (カプセル化、継承、ポリモーフィズム) を学んだ後、私の最大の収穫は、Java 言語などのオブジェクト指向プログラミングの利点を徐々に理解できたことです。Java 言語は、独自の独立性を維持し、常に進化し続けることができます。現像。カプセル化と継承が Java ポリモーフィズムを実現するための基礎であるならば、抽象クラスとインターフェイスはポリモーフィズムを非常に適切にサポートすると個人的には思います。

1. 抽象クラス

正式に言えば、abstract で変更されたクラスは抽象クラスです。抽象クラスは不完全であり、基本クラスとしてのみ使用でき、インスタンス化できません (新規にすることはできません)。

平たく言えば、抽象クラスはそれ自体では何も行わず、その仕様を実装するために他のクラスを必要とします。これは抽象メソッドのセットを定義し、この抽象メソッドのセットの特定の式は派生クラスによって実装できます。抽象クラスの実装には継承を使用する必要があり、そうでない場合は作成しても意味がありません。

抽象クラスを使用する場合は、次の点に注意する必要があります。

1. 抽象クラスは単なる参照であり、インスタンス化の作業はそのサブクラスに引き継がれる必要があります。サブクラスによって実装される

3. クラス内に、(abstract によって変更された) メソッドが定義されている限り、クラスは抽象クラスとして定義される必要があります (クラス名も変更する必要があります)。 by abstract);

4. 抽象クラスには具象メソッドが含まれる場合もあれば、含まれない場合もあります。 Abstract を private、static、fanal と同じにすることはできません。また、同じメソッドをネイティブと並行して変更することもできません。

コード例:

1 public abstract class ChouX {2     public abstract void method1();3 4     public void method2() {5 6     }7 }

//抽象类public abstract class Animal {public abstract void shout();
}

1 //猫子类2 public class Cat extends Animal {3     public void shout() {4         System.out.println("喵~~");5     }6 }

//Dog子类public class Dog extends Animal {public void shout() {
        System.out.println("汪汪汪。。。");
    }
}
出力:

2. オブジェクト指向のインターフェース

プログラミング、抽象化がその大きな特徴です。 Java では、OOP 抽象化は、抽象クラスとインターフェイスという 2 つの形式で反映できます。

ソフトウェアエンジニアリングにおけるインターフェースとは、一般に他の人によって呼び出されるメソッドまたは関数を指します。

形式:

//测试类public class Test {public static void main(String[] args) {
        Animal a1 = new Dog();
        Animal a2 = new Cat();
        a1.shout();
        a2.shout();
    }
}

[public] interface InterfaceName{

}

クラスを特定のインターフェイスのセットに従わせるには、implements キーワードを使用する必要があります。

形式:

class ClassNameimplements Interface1, Interface2, Interface3....{} (クラスが複数の特定のインターフェースに従うことを許可します)
3. 抽象クラスとインターフェースの違い

1.違い

第一に、抽象クラスはメンバー メソッドの実装の詳細を提供できますが、インターフェイスにはパブリック抽象メソッドのみが存在できます。

第二に、抽象クラスのメンバー変数はさまざまな型にすることができますが、インターフェイスのメンバーは Public static Final のみにすることができます。 type;さらに、インターフェイスには静的コード ブロックと静的メソッドを含めることはできませんが、抽象クラスには含めることができます。

最後に、クラスは 1 つの抽象クラスのみを継承できますが、複数のインターフェイスを継承できます。

2. 設計レベルでの違い

まず、抽象クラスは物の抽象化、つまりクラスの抽象化ですが、インターフェイスは動作の抽象化です。

さらに、抽象クラスは多くのサブクラスの親クラスとして機能し、テンプレート設計になっています。インターフェイスは動作仕様です。

最後に、抽象クラスでメソッドを変更したい場合は、それを抽象クラスに直接実装でき、サブクラスを変更する必要はありません。これがインターフェイスで発生した場合は、このインターフェイスにリンクされているすべてのクラスを変更する必要があります。

要約: ここまで述べてきましたが、原理を理解すれば、実際には非常に簡単です。たとえば、抽象クラスの場合は、抽象クラスを親クラスとして定義します。クラスを完全に説明していないか、数年後にクラスがアップグレードされた可能性があります。いつも予約が入っています。現時点では、親クラス全体を転覆するために戦争をする必要はありません。サブクラスに特定の変更を加えるだけで済みます。何を変更するかしないか、いつ変更するかを決めるのはあなた次第です。これにより、柔軟性と再利用性が向上するのではないでしょうか?抽象クラスとインターフェイスの違いは、魚やボートが水の中を泳げるのと同じで、同じクラスではありません。魚とボートを同じクラスに入れることは考えませんが、両方ともこの「泳ぐ」アクションをインターフェイスに設定して、魚がそれを使用できるようにし、ボートもそれを使用できるようにします。将来、「泳ぐ」ことができるものを説明したいときに使用できます。

インターネット上に非常に役立つ事例があります:

抽象クラスとインターフェースの違いを理解するのに役立つように、注意深く考えることができます。

りー

りーりー

以上がJava の基本 - 抽象クラスとインターフェイスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
Java開発のどの側面がプラットフォームに依存していますか?Java開発のどの側面がプラットフォームに依存していますか?Apr 26, 2025 am 12:19 AM

javadevelopmentisnotentirelylylypratform-IndopentDuetoseveralfactors.1)jvmvariationsaffectperformanceandbehavioracrossdifferentos.2)nativeLibrariesviajniintroducePlatform-specificissues.3)giaiasystemsdifferbeTioneplateplatifflics.4)

さまざまなプラットフォームでJavaコードを実行するときにパフォーマンスの違いはありますか?なぜ?さまざまなプラットフォームでJavaコードを実行するときにパフォーマンスの違いはありますか?なぜ?Apr 26, 2025 am 12:15 AM

Javaコードは、さまざまなプラットフォームで実行するときにパフォーマンスの違いがあります。 1)JVMの実装と最適化戦略は、OracleJDKやOpenJDKなどとは異なります。 2)メモリ管理やスレッドスケジューリングなどのオペレーティングシステムの特性もパフォーマンスに影響します。 3)適切なJVMを選択し、JVMパラメーターとコード最適化を調整することにより、パフォーマンスを改善できます。

Javaのプラットフォームの独立性の制限は何ですか?Javaのプラットフォームの独立性の制限は何ですか?Apr 26, 2025 am 12:10 AM

java'splatformindepentedencehaslimitationsincludingporformanceoverhead、versioncompatibulisisues、changleSwithnativeLibraryIntegration、プラットフォーム固有の機能、およびjvminStallation/maintenation。

プラットフォームの独立性とクロスプラットフォーム開発の違いを説明します。プラットフォームの独立性とクロスプラットフォーム開発の違いを説明します。Apr 26, 2025 am 12:08 AM

PlatformEndependEncealLowsProgramStorunonAnyPlatformWithOdification、whilecross-platformdevelopmentReadreessomeplatform-specificAdjustments.platformindependence、explifiedByjava、unableSiversAlexecutionButMayCompromperformance

ジャストインタイム(JIT)コンピレーションは、Javaのパフォーマンスとプラットフォームの独立性にどのような影響を与えますか?ジャストインタイム(JIT)コンピレーションは、Javaのパフォーマンスとプラットフォームの独立性にどのような影響を与えますか?Apr 26, 2025 am 12:02 AM

jitcompalilationinjavaenhancesperformance whelemaintaining formindepence.1)itdynamicallyTrantesiNTODENATIVEMACHINECODEATRUNTIME、最適化されたコードを最適化すること、

Javaがクロスプラットフォームデスクトップアプリケーションを開発するための人気のある選択肢なのはなぜですか?Javaがクロスプラットフォームデスクトップアプリケーションを開発するための人気のある選択肢なのはなぜですか?Apr 25, 2025 am 12:23 AM

javaispopularforsoss-platformdesktopapplicationsduetoits "writeonce、runaynay" philosophy.1)itusesbytecodatiTatrunnanyjvm-adipplatform.2)ライブラリリケンディンガンドジャヴァフククレアティック - ルルクリス

Javaでプラットフォーム固有のコードを作成する必要がある場合がある状況について話し合います。Javaでプラットフォーム固有のコードを作成する必要がある場合がある状況について話し合います。Apr 25, 2025 am 12:22 AM

Javaでプラットフォーム固有のコードを作成する理由には、特定のオペレーティングシステム機能へのアクセス、特定のハードウェアとの対話、パフォーマンスの最適化が含まれます。 1)JNAまたはJNIを使​​用して、Windowsレジストリにアクセスします。 2)JNIを介してLinux固有のハードウェアドライバーと対話します。 3)金属を使用して、JNIを介してMacOSのゲームパフォーマンスを最適化します。それにもかかわらず、プラットフォーム固有のコードを書くことは、コードの移植性に影響を与え、複雑さを高め、パフォーマンスのオーバーヘッドとセキュリティのリスクをもたらす可能性があります。

プラットフォームの独立性に関連するJava開発の将来の傾向は何ですか?プラットフォームの独立性に関連するJava開発の将来の傾向は何ですか?Apr 25, 2025 am 12:12 AM

Javaは、クラウドネイティブアプリケーション、マルチプラットフォームの展開、および言語間の相互運用性を通じて、プラットフォームの独立性をさらに強化します。 1)クラウドネイティブアプリケーションは、GraalvmとQuarkusを使用してスタートアップ速度を向上させます。 2)Javaは、埋め込みデバイス、モバイルデバイス、量子コンピューターに拡張されます。 3)Graalvmを通じて、JavaはPythonやJavaScriptなどの言語とシームレスに統合して、言語間の相互運用性を高めます。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。