父類
```
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)型**
```java
? Uncle dajiu1 = new UncleOne();
? ? ? ? dajiu1.faHongbao();
? ? ? //dajiu1.songYan();? // 會(huì)報(bào)錯(cuò) 子類獨(dú)有的方法在發(fā)生向上轉(zhuǎn)型的時(shí)候無法在父類中使用
? ? ? ? UncleOne temp = (UncleOne) dajiu1;? // 向下轉(zhuǎn)型
? ? ? ? temp.songYan();? // 可以調(diào)用子類獨(dú)有的方法
```
# instancesof