抽象クラスとインターフェイスが一緒に扱われる理由は、それらが区別するのが難しく、互いに独立しているためです。 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("汪汪汪。。。"); } }
ソフトウェアエンジニアリングにおけるインターフェースとは、一般に他の人によって呼び出されるメソッドまたは関数を指します。
形式:
//测试类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 キーワードを使用する必要があります。
形式:
1.違い
第一に、抽象クラスはメンバー メソッドの実装の詳細を提供できますが、インターフェイスにはパブリック抽象メソッドのみが存在できます。
第二に、抽象クラスのメンバー変数はさまざまな型にすることができますが、インターフェイスのメンバーは Public static Final のみにすることができます。 type;さらに、インターフェイスには静的コード ブロックと静的メソッドを含めることはできませんが、抽象クラスには含めることができます。
最後に、クラスは 1 つの抽象クラスのみを継承できますが、複数のインターフェイスを継承できます。
2. 設計レベルでの違い
まず、抽象クラスは物の抽象化、つまりクラスの抽象化ですが、インターフェイスは動作の抽象化です。
さらに、抽象クラスは多くのサブクラスの親クラスとして機能し、テンプレート設計になっています。インターフェイスは動作仕様です。
最後に、抽象クラスでメソッドを変更したい場合は、それを抽象クラスに直接実装でき、サブクラスを変更する必要はありません。これがインターフェイスで発生した場合は、このインターフェイスにリンクされているすべてのクラスを変更する必要があります。
要約: ここまで述べてきましたが、原理を理解すれば、実際には非常に簡単です。たとえば、抽象クラスの場合は、抽象クラスを親クラスとして定義します。クラスを完全に説明していないか、数年後にクラスがアップグレードされた可能性があります。いつも予約が入っています。現時点では、親クラス全体を転覆するために戦争をする必要はありません。サブクラスに特定の変更を加えるだけで済みます。何を変更するかしないか、いつ変更するかを決めるのはあなた次第です。これにより、柔軟性と再利用性が向上するのではないでしょうか?抽象クラスとインターフェイスの違いは、魚やボートが水の中を泳げるのと同じで、同じクラスではありません。魚とボートを同じクラスに入れることは考えませんが、両方ともこの「泳ぐ」アクションをインターフェイスに設定して、魚がそれを使用できるようにし、ボートもそれを使用できるようにします。将来、「泳ぐ」ことができるものを説明したいときに使用できます。
インターネット上に非常に役立つ事例があります:抽象クラスとインターフェースの違いを理解するのに役立つように、注意深く考えることができます。
りー
りーりー
以上がJava の基本 - 抽象クラスとインターフェイスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

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

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

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

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

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

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

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


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

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

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ホットトピック









