java基礎day09

                                   多態
同一事物在不同的條件之下,展現的意識形態不一樣

程序中的多態

1)  具有繼承關係

2)  子類必須重寫父類的方法

3)  子類對象賦給父類、父類的引用指向子類、(里氏替換原則)

4)  父類調用方法—透明的調用了子類的方法
簡述多態的概念,子類和父類之間轉換是遵循的規則。

多態:是具有表現多種形態的能力的特徵。專業說法:同一個實現接口,使用不同的實例而執行不同的操作。 
子類轉換成父類(向上轉換)時的規則: 
將一個父類的引用指向一個子類對象,稱爲向上轉型,自動進行類型轉換。 
此時通過父類引用變量調用的方法是子類覆蓋或繼承父類的方法,不是父類的方法。 
此時通過父類引用變量無法調用子類特有的方法。 
父類到子類的轉換(向下轉型)
將一個指向子類對象的父類引用賦給一個子類的引用,稱爲向下轉型,此時必須進行強制類型轉換

案例

編碼創建一個打印機類Printer,定義抽象方法print();創建兩個子類,即針式打印機類DotMatrixPrinter和噴墨打印機類InkpetPrinter,並在各自類中重寫方法print(),編寫測試類實現兩種打印機;再添加一個激光打印機子類LaserPrinter,重寫方法print(),修改測試類實現該打印機打印。

//打印機類

public abstract class Printer {
    public Printer(){
        
    }

    public abstract void print();
}

//針式打印機
public class DotMatrixPrinter extends Printer {

    @Override
    public void print() {
        // TODO Auto-generated method stub
        System.out.println("針式打印機");
    }

}

//噴墨打印機

public class InkpetPrinter extends Printer{

    @Override
    public void print() {
        // TODO Auto-generated method stub
        System.out.println("噴墨打印機");
    }

}

//激光打印機

public class LaserPrinter extends Printer{

    @Override
    public void print() {
        // TODO Auto-generated method stub
        System.out.println("激光打印機");
    }
}

public class Test {
   public static void main(String[] args) {
            Printer dmp=  new DotMatrixPrinter();
            Printer ip = new InkpetPrinter();
            Printer lp=  new LaserPrinter();
            dmp.print();
            ip.print();
            lp.print();
  }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章