BD-11-day 09-マルチステート(アップシフト)

1806 ワード

多態の理解:私は父類と子類があった後、上への転換の運用があり、上への転換は父類が子類を引用する対象だと思います.
抽象的な理解は同じ行為の異なる情景の下での異なる表現形式であり、表現効果である.
Shape shape=new triangle();
 
サブクラスと親クラスがすでに関連していることを前提として、つまりサブクラスが向上していることを前提としています.
 
菜鳥チュートリアル:
マルチステートが存在する3つの条件:継承、書き換え、親参照が子オブジェクトを指す.
インタフェース:インタフェースリファレンスは実装クラスインスタンスを指します
 
面接問題があります.各シーケンス番号の出力結果は何ですか.


package com.judy.demo;


public class OTest {
    public static void main(String[] args) {
        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));   // ⑨

    }

}


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で、Aのメソッドを実行します.
A and A//BクラスはDクラスに自動的に転向することができず、Aクラスのサブクラスを実行し、AクラスオブジェクトはサブクラスBを指すことができる.A and A//CクラスはBクラスのサブクラスであり,Aクラスへのアップシフトが可能である.A and D//転換していないで、D類のオブジェクトに入って、タイプは一致します
アップシフト、インスタンス化対象はBクラス:B and A//B and A and D
B類を親として、B and B B and B A and D
ps:私はプログラムを実行して結果を見てやっと原因を分析することができて、結果は自分の分析を気絶して、このプログラムを見ないで、気が狂って、心がいらいらして、/泣く