Java多態(tài)

我們先來回顧一下多態(tài)的定義:

多態(tài)是同一個行為具有多個不同表現(xiàn)形式或形態(tài)的能力。

這句話看上去很不好理解,接下來我將用一個例子來幫助大家清晰地去理解什么是多態(tài)。

比如我們現(xiàn)在有一個父類animal ,它衍生出來的子類有貓類 cat ,狗類dog,我們知道動物都會叫,但是貓的叫是“喵喵喵”,狗子的叫是“汪汪汪”,因此對于“叫”這種行為,貓和狗的表現(xiàn)形式有所不同,這就稱為多態(tài)。再舉一個例子,對于一個男人,一天中會扮演不同的角色,在家是父親,在上班的地方是員工,在汽車?yán)锸撬緳C(jī),這是一個人在一天中的不同的表現(xiàn)形式,也可以稱之為多態(tài)。

在Java中多態(tài)分為兩種:

  • 編譯期多態(tài)
  • 運(yùn)行期多態(tài)

首先是編譯期多態(tài),也稱為靜態(tài)多態(tài),在Java中可以通過方法重載實(shí)現(xiàn)。在這里簡單介紹一下方法重載。所謂方法重載,就是指同一個函數(shù),傳入不同類型或不同數(shù)目的參數(shù)時執(zhí)行的方法也不同。舉兩個例子:

例1:不同類型的參數(shù)

class MultiplyFun {
 
  // 兩個int參數(shù)
  static int Multiply(int a, int b)
  {
    return a * b;
  }
 
  // 兩個double參數(shù)
  static double Multiply(double a, double b)
  {
    return a * b;
  }
}
 
class Main{
  public static void main(String[] args)
  {
    System.out.println(MultiplyFun.Multiply(2, 4));
    System.out.println(MultiplyFun.Multiply(5.5, 6.3));
  }
}

輸出

8
34.65

例2:不同數(shù)目的參數(shù)

class MultiplyFun{
     // 兩個參數(shù)
    static int Multiply(int a, int b)
    {
      return a * b;
    }
     // 三個參數(shù)
    static int Multiply(int a, int b, int c)
    {
      return a * b * c;
    }
}
 class Main {
    public static void main(String[] args)
    {
      System.out.println(MultiplyFun.Multiply(2, 4));
      System.out.println(MultiplyFun.Multiply(2, 7, 3));
    }
}

輸出:

8
42

第二個就是運(yùn)行期多態(tài),也稱之為多態(tài)方法調(diào)度。在Java中可以通過方法重寫實(shí)現(xiàn)。所謂方法重寫就是指一個子類繼承了父類后,會對父類中的一些函數(shù)進(jìn)行修改,所以父類的方法就在子類中重寫了。下面舉一個例子。

class Parent {
    void Print()
    {
        System.out.println("parent class");
    }
}

class subclass1 extends Parent {
    void Print()
    {
        System.out.println("subclass1");
    }
}

class subclass2 extends Parent {
    void Print()
    {
        System.out.println("subclass2");
    }
}

class TestPolymorphism3 {
    public static void main(String[] args)
    {
        Parent a;
        a = new subclass1();
        a.Print();
        a = new subclass2();
        a.Print();
    }
}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

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