ビルドしてインターフェイスするとき、インターフェイスを実装できるクラスの数はいくつですか?
答えが複数の場合、javaはインターフェイスへの呼び出し時(実装を直接呼び出さない)にどの実装を使用するかをどのように知っていますか?Javaインターフェイスの概念
答えて
インターフェイスを実装できるクラスの数はいくつですか?
必要なだけ多く
答えが複数の場合、Javaはインターフェイスへの呼び出し時(実装を直接呼び出さない)にどの実装を使用するかをどのように知っていますか?
ここでは、late binding(動的バインディングとも呼ばれます)についての知識が役立ちます。
あなたが表示されます
Animal a1 = new Cat();
Animal a2 = new Dog();
a1.makeSound();
a2.makeSound();
結果は、それが起こる
mew
woof
であるように、あなたはまた、コードを持って
interface Animal{
void makeSound();
}
class Cat implements Animal{
public void makeSound(){
System.out.println("mew");
}
}
class Dog implements Animal{
public void makeSound(){
System.out.println("woof");
}
}
のようにそれを実装するインタフェースとクラスをしていると言うことができますボディ/コードの方法.makeSound()
が実行時に(コンパイル時ではない)が検索されている(呼び出されている)。各オブジェクトがそのクラスを覚えているので、a1
が保持するオブジェクトがCat
のインスタンスであり、a2
が保持するオブジェクトがDog
のインスタンスであることが分かるため、可能です。
だから、要するにあなたが行うとき:
a1.makeSound();
- JVMは、そのクラスについてそのオブジェクトを要求し、その後
- 、
a1
が保持するオブジェクトを受け取り(この場合には、それはそれはCat
のインスタンスであることを学びます。クラスCat.class
ファイル)にアクセスし、makeSound()
のコードを探しています(そのようなメソッドが見つからない場合、継承されている必要があるとみなされます)。スーパークラスでそれを調べる) - このメソッドが見つかると、そこからコードが呼び出されます。
非常によく言った。ありがとうございました。 – MarkoRocko
@MarkoRocko大歓迎です。私は、Javaで多形性を持つこのメカニズムのおかげで、それを追加することを忘れてしまった。また、 '.someMethod()'を呼び出すときに動的バインディングから3つの例外があります。コンパイル時にコードが設定され、実行時に動的に検索されない場合の最初の例外は、メソッドが 'final'のときです(実行時に*検索*するためのポイントがオーバーライドされないためです)。第2のケースは、メソッドが 'private'の場合です(プライベートメソッドは他のクラスのプライベートメソッドを宣言してアクセスすることは不可能です)。 – Pshemo
@MarkoRocko第3のケースは、 'reference.staticMethod()'がコンパイル時に 'ReferenceType.staticMethod()'に変更されたため、メソッドがstaticの場合です。 – Pshemo
- 1. java threadsの概念
- 2. シリアライズの概念 - java - C#
- 3. Javaマルチプレイヤーゲーム - ネットワーキングの概念
- 4. sqlite概念からcoredata概念へ?
- 5. 概念
- 6. Javaの概念の継承ハック?
- 7. JavascriptのJavaオブジェクト指向の概念
- 8. Javaの共有メモリの概念
- 9. クラスの概念
- 10. インデックスアクセスの概念
- 11. メークファイルの概念
- 12. Java例外処理の概念
- 13. Javaの列挙型:概念疑い
- 14. XMLはOOPの概念でインターフェイスをサポートしていますか?
- 15. 概念クラス図
- 16. 概念:APIレベルテスト
- 17. Windowsワークフローランタイムの概念
- 18. UNIXブロックバッファキャッシュの概念
- 19. HTMLセキュリティの概念
- 20. C++スレッドの概念
- 21. Infinityループスライダの概念
- 22. JPAリレーションシップマッピングの概念
- 23. C++概念ヘルプ、ポインタ
- 24. TDDの概念のレール
- 25. winformsのマスター - チャイルドページの概念
- 26. Twitterのオフラインサイトの概念
- 27. oopの概念の実装
- 28. C#のプライベートクラスの概念
- 29. Linux/Unixの「パフォーマンスカウンタ」の概念
- 30. C#のベンチマークの概念?
Javaにどの実装を使用すべきかを教えてください! – user2004685
あなたが 'import'を使うときは、どの実装を使うべきかをJavaに伝えます。 – MaxG
無制限の数では、インターフェイスを実装し、参照を設定するときに具体的な型を指定することができます。 –