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
留言列表