php エディタ Zimo を使用すると、Java の抽象クラスとインターフェイスの使用機会を探索できます。 Java プログラミングでは、抽象クラスをいつ使用するか、インターフェイスをいつ使用するかを選択することが重要です。この記事は、この一般的な質問に答え、さまざまな状況で適切な抽象クラスまたはインターフェイスを選択する方法をより深く理解するのに役立ちます。
抽象化とインターフェースの違いはなんとなくわかったのですが、どうしても理解できないのが、どのような場合に抽象化を使用し、どのような場合にインターフェイスを使用するのかということです。インターフェイス抽象化を選択するにはどのような変数が必要ですか?またその逆も同様です?オンラインの回答のほとんどは違いを示すことを目的としていますが、私でも理解できます。いつがより適切かわかりません。
一般的な古いルールは、抽象クラスを書かざるを得なくなるまでインターフェイスを使い続けることです。
Java のinterface は、他の型が準拠するために
選択 できるパブリック インターフェイスを定義するインスタンス化不可能な型です。
であるため、
abstract という単語を使用する必要はありません。
になります。これはもう当てはまりません。置き換えられない限り、インターフェースは
implementing クラスで使用されるデフォルトの実装を持つことができるようになりました。
ヘルパー メソッドを宣言できます。これらはデフォルトの実装に役立ちます。
できます。
abstract class は、インスタンス化できない単なるクラスです。抽象クラスでは
abstract メソッドを定義する必要はありませんが、定義したくなることもよくあります。
、
private、
protected、および package-private。
として保持することもできます。抽象クラスのメソッド
は 暗黙的な abstract ではないため、そのようにマークする必要があります。
クラスは、独自のコンストラクターでコンストラクターを呼び出すために
super を使用する必要があります。抽象クラスは任意の可視性のインスタンス変数を持つことができ、それらは親クラスのインスタンス変数と同様に機能します。
クラスまたは具象クラスの 1 つのクラスのみを
拡張できます。クラスの abstract
性によって、そのクラスが持つことができるスーパークラスの数は変わりません。
は標準ではなく例外であるべきです。サブクラスに独自の動作を定義させながら内部状態を維持する必要がある場合は、抽象クラスを使用する必要があります。良い例は、Java Swing GUI ライブラリの AbstractButton
です。
abstractbutton は、ボタン、トグル ボタン、メニュー内の項目など、ウィンドウ内のボタンのように漠然と動作するものの抽象親です。誰もが abstractbutton
をサブクラス化し、そのメンバーを実装してボタンのような表示を定義できます。ただし、abstractbutton
は、ウィンドウやスイング API 全体と通信するために、多くの内部状態 (その多くは jcomponent
からのもの) も維持する必要があります。
型のコレクションのパブリック インターフェイスを定義する場合は、
を使用します。これらのメソッドの一部にデフォルトの実装を提供し、2014 年以降にリリースされた Java バージョンを使用する場合は、インターフェイスを使用します。デフォルトの実装が必要だが、依然として 2000 年代に留まっている場合は、抽象クラスを使用してください。 Java のバージョンに関係なく、プライベート状態 (インスタンス変数など) またはカスタム初期化 (コンストラクターなど) が必要な場合は、抽象クラスを使用します。 ######インターフェース:###
たとえば、次のようなインターフェイスがあるとします。
リーリー
そして、animal を実装するいくつかのクラス:
インターフェイスを戻り値の型として使用できるようになったので、メソッドは
catまたは
dogを返すことができます。
リーリー抽象クラス:
抽象クラスがあるとします:
リーリー
ここで、これを拡張するクラスは
メソッドを実装する必要があります:
リーリー上記のクラスは両方とも、必要な
getname メソッドを実装していますが、親クラスの makenoise
メソッドにもアクセスでき、必要に応じてオーバーライドすることもできます。
その他の違いに注意することも重要です:
拡張できる抽象クラスは 1 つだけですが、複数の抽象クラスを実装できます。
インターフェース。
これらは相互に排他的ではありません。
以上がいつ抽象化を使用し、いつインターフェイスを使用するのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。