Java/多態

維基教科書,自由的教學讀本

多態是指對象能夠有多種形態。在 OOP 中最常用的多態性發生在當父類引用指向子類對象時。

任何能夠通過一個以上的 IS-A 測試的 Java 對象被認為是多態的。在 Java 中所有對象都是多態的,因為任何一個對象都會有一個他們自己類型的和 Object 類的 IS-A 關係。

重要的是知道,通過引用變量是唯一可以用來訪問一個對象的方法。引用變量可以只有一個類型。引用變量一旦被聲明是不能被改變的。

引用變量能夠重新分配到其他提供的沒有被聲明為 final 的對象。引用變量的類型將決定它可以調用的對象的方法。

一個引用變量能夠引用任何一個對象的聲明類型或任何聲明類型的子類型。一個引用變量可以聲明為一個類或接口類型。

示例

讓我們看下面的例子:

public interface Vegetarian{}
public class Animal{}
public class Deer extends Animal implements Vegetarian{}

現在 Deer 類是多態的,因為他有多個繼承機制。針對上面的例子有以下說法:

• Deer 就是 Animal

• Deer 就是 Vegetarian

• Deer 就是 Deer

• Deer 就是 Object

當我們提供引用變量來引用 Deer 對象,下面的聲明是合法的:

Deer d = new Deer();
Animal a = d;
Vegetarian v = d;
Object o = d;

所有的引用變量 d, a, v, o 引用堆內存中同一個對象 Deer。