package pkg6.pkg31;

class A {

    public void fun1() {
        System.out.println("A -- > fun1");
    }

    public void fun2() {
        System.out.println("A -- > fun2");
    }
}

class B extends A {

    public void fun1() {
        System.out.println("B -- > fun1");
    }

    public void fun3() {
        System.out.println("B -- > fun3");
    }
}

class C extends A {

    public void fun1() {
        System.out.println("C -- > fun1");
    }

    public void fun5() {
        System.out.println("C -- > fun5");
    }
}

public class Main {

    public static void main(String[] args) {
        A a1 = new C();//向下轉型前,一定要先向上轉型,確認關係
                                //向下轉型 
                                 //為什麼要向下轉型呢?
                                //為了使用 子 類別的個別特殊功能
        fun(a1);

        System.out.println("");

        A a2 = new B();//向下轉型前,一定要先向上車型,確認關係
                                //向下轉型 
                                //為什麼要向下轉型呢?
                                //為了使用 子 類別的個別特殊功能
        fun(a2);
    }
    //此處為向上轉型
    public static void fun(A a) {  //對於乘客來說,他只在意要搭交通工具
        //
        a.fun1();  //不管搭那一個交通工具一定都可以執行的功能

         //根據搭到不同的交通工具,應該可以執行不同的功能
        if (a instanceof B) {
            ((B) a).fun3();      //利用向下轉型,去執行特殊功能 
        }
        if (a instanceof C) {
            ((C) a).fun5();      //利用向下轉型,去執行特殊功能
        }

    }
}


執行結果:

C -- > fun1
C -- > fun5

B -- > fun1
B -- > fun3

arrow
arrow
    文章標籤
    Java
    全站熱搜
    創作者介紹
    創作者 mingyilai 的頭像
    mingyilai

    mingyilai的部落格

    mingyilai 發表在 痞客邦 留言(0) 人氣()