1. 程式人生 > 實用技巧 >行為型-狀態模式(State)

行為型-狀態模式(State)

多型

  • 概述:

    //多型是即封裝性,繼承之後,面向物件的第三大特徵。
    
  • 定義

    //多型:同一行為,的不同的表現形式
    
    生活中,比如跑的動作,貓,狗,大象,跑起來的動作是不一樣的。再比如飛的動作:昆蟲,鳥飛起來的動作是不一樣的。可見,同意行為,通過不同的事物,可以表現不同的形態。多型描述的就是這樣的一種狀態。
    
  • 前提條件

    1. 繼承或者實現(二選其一)
    2. 父類的引用指向子類的物件(格式體現)
    3. 方法的重寫(意義:不重寫沒意義)
    
  • 多型的表現

    ​ 多型的表現得格式

    父類型別  變數名 = new 子類物件();
    變數名.方法名();
    
    //備註:父類型別指的是子類物件繼承的父類型別,或者實現的父介面型別
    
    public class Fu{
        public void method(){
            System.out.println("這是父類的method方法");
        }
    }
    public void Zi extends Fu{
        @Override
        public void method(){
            System.out.println("這是子類的method方法");
        }
    }
    //polymorphism 多型
    public class Text{
        public static void main(String[] args){
        	//父類型別  變數名 = new 子類物件();
            Fu f = new Zi();
            //子類沒有重寫父類的方法輸出的是繼承的方法
            //子類重寫父類的方法本質呼叫的是子類當中重寫後的method方法
        }
    }
    
    //如果在使用多型方式呼叫方法時,首先檢查父類當中是否有該方法,如果沒有,則編譯報錯,如果有執行的是子類重寫後的方法。
    
  • 多型的好處

    在實際開發中,父類型別作為方法的形式(形參)(不同於實際引數),傳遞子類物件(實參)給方法,進行方法的呼叫,更能體現出多型的擴充套件性和便利性。

    //定義抽象父類
    public abstract class Animal{
    	//定義抽象方法
    	public abstract void eat();
    }
    //定義子類繼承抽象父類
    public class Cat extends Animal{
    	@Override
    	public void eat(){
    		System.out.println("