close

文章引自: [Java] Overloading 和 Overriding

Overloading 和 Overriding 這兩個物件導向的名詞,常常讓人剪不斷,理還亂,可是偏偏研究所考試又愛考,老師在說又沒在聽,對於這兩個名詞真是一番無奈掛心愁。

Overloading有人將他稱為「多載」,是指說在「相同類別」中,定義「名稱相同」,但是「引數個數不同」,或是「引數型態不同」的函式,這樣JAVA就可以根據引數的個數,或是引數的型態,呼叫到對應的函式。

以JAVA內建的Arrays類別當例子而言:
static int binarySearch(byte[] a, byte key);
static int binarySearch(byte[] a, int fromIndex, int toIndex, byte key);

可以發現到,同樣是「binarySearch」這個函式,但是隨著引數的不同,Java會自動呼叫相對應的函式。

而Overriding可就不是這麼回事了,Overriding是指「子類別」繼承父類別,但是改寫父類別既有的函式,想當然爾,這包括了「引數相同」「函式名稱相同」「傳回值型態要相同」等條件囉!

舉例而言:
class Animal
{
public int getLegs()
{
return legs;
}
}

class Bird extends Animal
{
public int getLegs()
{
return legs*2;
}
}

同樣都是有「getLegs()」這個函式,雖然回傳值不同,但是回傳值的型態均相同,這就是Overriding,可以看為函式的改寫。


arrow
arrow
    全站熱搜

    Rach 發表在 痞客邦 留言(0) 人氣()