English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Javaにおける多態性の実現
多態性とは何か
以下は、多態性が存在する三つの必要条件です。皆さんは夢の中でも覚えられるように要求します!
多態性が存在する三つの必要条件
一、継承が必要;
二、オーバーライドが必要;
三、親クラスの参照が子クラスのオブジェクトを指す。
多態性の利点:
1.可換性(サブスタイティビリティ)。多態性は既存のコードに対して可換性を持っています。例えば、多態性は円Circleクラスで働くだけでなく、環や他の任何の円形幾何体に対しても同様に働きます。
2.拡張性(エキスティンシビリティ)。多態性はコードに対して拡張性を持っています。新しいサブクラスの追加は、既存のクラスの多態性、継承性、その他の特性の動作や操作に影響を与えません。実際、新しいサブクラスは多態性機能をより簡単に取得できます。例えば、圆锥、半円錐、半球体の多態性を既に実現している場合、球体クラスの多態性を簡単に追加できます。
3.インターフェース性(インターフェース-ability)。多態性は、超クラスがメソッドシグネチャを通じて、サブクラスに共通のインターフェースを提供し、サブクラスがそれを拡張またはオーバーライドすることで実現されます。図では、8.3 図に示されます。図の超クラスShapeは、多態性を実現するための二つのインターフェースメソッドcomputeArea()およびcomputeVolume()を定義しています。サブクラス、例えばCircleやSphereは、多態性を実現するために、これらのインターフェースメソッドを拡張またはオーバーライドします。
4.柔軟性(フレキシビリティ)。それは、アプリケーションで多様な操作を示し、使用効率を向上させます。
5.簡便性(シンプルネス)。多態性の簡便性は、アプリケーションソフトウェアのコードの書き方や修正プロセスを簡便にし、特に大量のオブジェクトの演算や操作を行う場合、この特性が特に目立つ重要です。
Javaでの多態性の実現方法:インターフェース実装、親クラスを継承してメソッドのオーバーライド、同じクラス内でメソッドのオーバーロードを行います。
一つの小さなテーマ:
(一)関連クラス
class A ...{ public String show(D obj)...{ return ("A and D"); } public String show(A obj)...{ return ("A and A"); } } class B extends A...{ public String show(B obj)...{ return ("B and B"); } public String show(A obj)...{ return ("B and A"); } } class C extends B...{} class D extends B...{}
(二)問題:以下の結果は何ですか?
A a1 = new A(); A a2 = new B(); B b = new B(); C c = new C(); D d = new D(); System.out.println(a1.show(b)); ① System.out.println(a1.show(c)); ② System.out.println(a1.show(d)); ③ System.out.println(a2.show(b)); ④ System.out.println(a2.show(c)); ⑤ System.out.println(a2.show(d)); ⑥ System.out.println(b.show(b)); ⑦ System.out.println(b.show(c)); ⑧ System.out.println(b.show(d)); ⑨
(三)解答
① A and A ② A and A ③ A and D ④ B and A ⑤ B and A ⑥ A and D ⑦ B and B ⑧ B and B ⑨ A and D
ご読覧ありがとうございます。皆様のサポートに感謝します!