父類
public class Uncle {
private String name;
private int age;
public void faHongbao() {
System.out.println("舅舅發(fā)紅包");
}
}
子類一:
public class UncleOne extends Uncle{
public void faHongbao() {
System.out.println("大舅發(fā)紅包");
}
public void songYan() {
System.out.println("大舅喜歡送煙");
}
}
子類二:
public class UncleTwo extends Uncle{
public void faHongbao() {
System.out.println("二舅發(fā)紅包");
}
}
多態(tài)
UncleOne dajiu = new UncleOne();
dajiu.faHongbao(); // 大舅發(fā)紅包
UncleTwo uncleTwo = new UncleTwo();
uncleTwo.faHongbao(); // 二舅發(fā)紅包
向上轉(zhuǎn)型
Uncle dajiu1 = new UncleOne();
dajiu1.faHongbao(); // 大舅發(fā)紅包
向下轉(zhuǎn)型
Uncle dajiu1 = new UncleOne();
dajiu1.faHongbao();
//dajiu1.songYan(); // 會報錯 子類獨有的方法在發(fā)生向上轉(zhuǎn)型的時候無法在父類中使用
UncleOne temp = (UncleOne) dajiu1; // 向下轉(zhuǎn)型
temp.songYan(); // 可以調(diào)用子類獨有的方法
instancesof
判斷對象是否是指定的類型的實列
避免發(fā)生錯誤的類型轉(zhuǎn)換
public class Demo02 {
public static void main(String[] args) {
Uncle uncle1 = new UncleOne();
Uncle uncle2 = new UncleTwo();
if ( uncle1 instanceof UncleOne){
UncleOne u1 = (UncleOne) uncle1;
u1.faHongbao();
}
if (uncle2 instanceof UncleTwo){
UncleTwo u2 = (UncleTwo) uncle2;
u2.faHongbao();
}
}
}