Java中多型轉型的問題理解及多型概述
阿新 • • 發佈:2019-02-02
一、虛擬碼
class 孔子爹 {
public int age = 40;
public void teach() {
System.out.println("講解Java");
}
}
class 孔子 extends 孔子爹 {
public int age = 20;
public void teach() {
System.out.println("講解論語");
}
public void playGame() {
System.out.println("打DotA");
}
}
二、故事
Java培訓特別火,很多人來請孔子爹去講課,這一天孔子爹被請走了,但是還有人來請,就剩孔子在家,價格還挺高。孔子一想,我是不是可以考慮去呢?然後就穿上爹的衣服,帶上爹的眼鏡,粘上爹的鬍子。就開始裝爹...
三、問題解答及理解
//向上轉型
孔子爹 k爹 = new 孔子();
//到人家那裡去了
System.out.println(k爹.age); //40
k爹.teach(); //講解論語
//k爹.playGame(); //這是兒子才能做的
//講完了,下班回家了
//脫下爹的裝備,換上自己的裝備
//向下轉型
孔子 k = (孔子) k爹;
System.out.println(k.age); //20
k.teach(); //講解論語
k.playGame(); //英雄聯盟
附一:多型概述
某一個事物,在不同時刻表現出來的不同狀態。
舉例:
貓可以是貓的型別。貓 m = new 貓();
同時貓也是動物的一種,也可以把貓稱為動物。動物 d = new 貓();
多型的前提和體現:
1、有繼承關係
2、有方法重寫
3、有父類引用指向子類物件
附二:多型的分類
a:具體類多型
class Fu {}
class Zi extends Fu {}
Fu f = new Zi();
b:抽象類多型
abstract class Fu {}
class Zi extends Fu {}
Fu f = new Zi();
c:介面多型
interface Fu {}
class Zi implements Fu {}
Fu f = new Zi();