2021-04-25 多態(tài)筆記


# 多態(tài)

**父類**

```java
public class Uncle {
    public 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 chouyan() {
        System.out.println("大舅喜歡抽煙");
    }

}

子類二:

public class UncleTwo  extends  Uncle{
    public void fahongbao () {
        System.out.println("二舅不僅發(fā)紅包,還送煙");
    }

}

啟動類:

多態(tài)

public class Domo {
    public static void main(String[] args) {
        // 多態(tài)
         UncleOne uncle1 = new UncleOne();
         uncle1.fahongbao();
        
        UncleTwo uncle2 = new UncleTwo(); // 向上轉(zhuǎn)型
        uncle2.fahongbao();

用 父類接受子類的對象,只能調(diào)用父類中出現(xiàn)過的方法,子類的擴展的獨有方法無法調(diào)用

public class Domo {
    public static void main(String[] args) {
     UncleOne uncle1 = new UncleOne();
     uncle1.chouyan(); 不能調(diào)用

向上轉(zhuǎn)型

UncleTwo uncle2 = new UncleTwo(); // 向上轉(zhuǎn)型
uncle2.fahongbao();

向下轉(zhuǎn)型

UncleOne uncle1 = new UncleOne();
UncleOne u1 = (UncleOne) uncle1 ; // 向下轉(zhuǎn)型
 u1.chouyan();
  u1.fahongbao();

instanceof

判斷對象是否給定的類的實例

作用:避免類型轉(zhuǎn)換時,出現(xiàn)錯誤,進而引發(fā)程序的崩潰

public class Domo01 {
    public static void main(String[] args) {
        Uncle uncle1 = new UncleOne();
        if (uncle1 instanceof UncleTwo) {
            UncleTwo u2 = (UncleTwo) uncle1;
            u2.fahongbao();
        }
        if (uncle1 instanceof  UncleOne) {
            UncleOne u1 = (UncleOne) uncle1 ;
            u1.chouyan();
            u1.fahongbao();
        }
    }
}
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容