ポリモーフィックオブジェクトのJava-

多型は、主に二つの側面では、オブジェクト指向、マルチステートオブジェクトで非常に重要な概念です。

  • オーバーロードされたメソッドのオーバーライド
  • 多型のオブジェクト

多型のオブジェクトは、二つのタイプに分けられます。

  • アップキャスト:サブクラスのオブジェクト - 親クラスのオブジェクト
  • ダウンキャスト:親オブジェクト - サブクラスのオブジェクト

自動的に上向きに推移、プログラムオブジェクト。意気消沈サブクラスは、明示的にトランジションのタイプを指定する必要があります。形式は次のとおりです
:アップキャストオブジェクト父类 父类对象 = 子类实例;
オブジェクトダウンキャスト:子类 子类对象 = (子类)父类实例;
ケースオブジェクトアップキャスト:
親クラスの定義:

public class Father {

    public void fun1(){
        System.out.println("father`s method fun1");
    }
    public void fun2(){
        System.out.println("father's method fun2");
    }
}

定義されたサブクラス

public class Son extends Father {

    @Override
    public void fun1() {
        System.out.println("son's method fun1 ");
    }
    public void fun3(){
        System.out.println("son's method fun3");
    }
}

試験上方遷移

    @Test
    public void test() {
        Son son = new Son();
        Father father = son;
        father.fun1();
    }

テスト結果:

FUN1息子の方法で
分析:
父のFUN1のメソッド呼び出しが、実際には、サブクラスのためのFUN1を呼び出します。すなわち、遷移が発生した後、方法は、サブクラスによってオーバーライドされなければならないオブジェクトアップを呼び出すとき、です。しかし、父は、クラスの呼び出し息子fun3法で定義されていません。あなたがチューニングfun3方法にしたい場合は、サブクラスのインスタンスを呼び出す必要があります。

オブジェクトダウンキャスト:
以上のテストケースを使用します。

    @Test
    public void test2() {
        Father father = new Son(); //向上转型
        Son son = (Son) father;  //向下转型
        son.fun1();
        son.fun2();
        son.fun3();
    }

結果:

息子のメソッドのFUN1の
fun2父のメソッド
息子のメソッドfun3

もう一つ注意すべきは次のとおりです。変態なければならない最初のダウンキャストの前に。

公開された22元の記事 ウォンの賞賛9 ビュー30000 +

おすすめ

転載: blog.csdn.net/qq_19408473/article/details/71194358