Java3の多型における思考
人々はしばしば、オブジェクト指向として提示されるメソッドのオーバーロードなど、Javaの他の非オブジェクト指向の特徴と混同されます。だまされないでください:それが遅れて拘束されないなら、それは多型ではありません
テキストによる翻訳
メソッドの過負荷など、Javaの別の非オブジェクト指向の機能に常に混乱しています。時々、それはオブジェクト指向として存在します。愚かにならないでください。遅延結合(つまり、ランタイム中に動的結合)がない場合、それは多型ではありません。
したがって、この箇所が表現したいのは、多型が動的結合を持つ必要があること、そうでなければポリモーフィズムではなく、メソッドの過負荷は多型ではないということです(メソッドの過負荷は編集期間中に決定され、後期には動的結合がないためです。
これらの3つの条件が満たされると1。継承があります2。上書きがあります3。子クラスのオブジェクトを指す親クラスの参照が必要です
<span style="font-size:14px;"> Example: public class Address {private String name;public Address(String name){this.name = name;}public String getName() {return name;}public void setName(String name) {this.name = name;}}Define the base class (abstract class): public abstract class Vehicle {abstract void go(Address address);}Car Implementation of base class:パブリッククラスの車は車両{@overridepublic void go(アドレスアドレス){system.out.println( " + address.getname());}}飛行機を実装します。ドライブ(車両V){///多形性、親クラスの参照はサブクラスオブジェクトをポイントし、実際の送信は抽象クラス車両または実装クラスのサブクラスであり、コンパイラは特定の実装クラスに基づいて実装方法を見つけます。 v.go(新しいアドレス( "hangzhou(要約)")); // //実際には飛行機のオブジェクトであり、コンパイラは飛行機でのGOの実装を見つけます。D.Drive(new Car()); //実際には車のオブジェクトであり、コンパイラは飛行機でのGoの実装を見つけます多型:水など、同じことの異なる状態を指します。水には3つの状態があります。
ガス、液体、固体。 Javaの多型は、この意味として理解することもできます。
親オブジェクトを1つ以上の子オブジェクトに等しく設定する手法、
たとえば、親=子;
多型は、同じクラス(親クラス)を使用して、異なるクラスのオブジェクトの参照を可能にします。
参照されるオブジェクトに応じて、同じ操作を異なる方法で実行します。
多型の実装には、過負荷と上書きの2つの方法が含まれます
例:動物a = new Tiger();これは古いトピックです、ハハ...
親クラスの参照は、子クラスオブジェクトを指します。動物クラスにはEat()方法が含まれており、Tigerクラスは
アニマルクラス、サブクラスが親クラスのEAT()方法を書き換えた場合、呼び出された場合、子供クラスに従うことができます。
正式な呼び出しは、本質的に親クラスの方法ですが、サブクラスが書き直された後、それは別の方法であり、これは多型です。
上記は、Java多型の実装の側面が主にどのような側面を反映しているかについての簡単な議論です。私はそれがすべての人に役立ち、wulin.comをもっとサポートすることを願っています〜