文章引自: [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,可以看為函式的改寫。