1、方法覆蓋(override)
即方法重寫,對父類的方法進行重寫,要求子類和父類的方法名和入參個數和型別必須一致。
public class parent
}public class children extends parent
}
2、方法過載(overload)
乙個類中可以存在多個重名的方法,但是要求方法的入參個數和型別都要不同。
public void test(string str);
public void test(int i);
有了方法覆蓋和方法過載的概念之後,接下來就需要詳細說明一下多型。
3、多型(動態繫結)
簡單說來就是父類引用指向子類物件,呼叫方法時會呼叫子類的實現,而不是父類的實現,這叫多型。
多型與繼承體系有關,與方法覆蓋有關,與方法過載無關。
3.1、接下來我們通過例項來驗證一下多型
class animal
public void enjoy()
}class cat extends animal
public void enjoy()
}class dog extends animal
public void enjoy()
}class bird extends animal
public void enjoy()
}/*定義乙個類lady(女士)*/
class lady
public void mypetenjoy()
}public class testpolymoph
}
執行結果:
我養的貓高興地叫了一聲……
我養的狗高興地叫了一聲……
我養的鳥高興地叫了一聲……
3.2、多型的使用場景
多型的存在有三個必要的條件:
(1)要有繼承(兩個類之間存在繼承關係,子類繼承父類)
(2)要有重寫(在子類裡面重寫從父類繼承下來的方法)
(3)父類引用指向子類物件
3.3、多型的好處和弊端
弊端:不能使用子類的特有功能。
我就想使用子類的特有功能?行不行?
行。怎麼用呢?
a:建立子類物件呼叫方法即可。(可以,但是很多時候不合理。而且,太佔記憶體了)
b:把父類的引用強制轉換為子類的引用。(向下轉型)
好處:a:提高了**的維護性(繼承保證)
b:提高了**的擴充套件性(由多型保證)
覆蓋方法和過載方法
覆蓋方法 通過之前的學習,我們已經知道了如何通過建立新的子類來重用現有的 繼承 雖然這個方案可以讓我們輕鬆解決許多現實世界裡的問題,但在某些場合,卻又顯得不夠用。例如當我們需要在基類裡提供乙個通用的函式,但在它的某個子類裡需要修改這個方法的實現,在 c 裡,覆蓋 overriding 就可以做到。回...
方法覆蓋和方法過載
0 最根本的區別是,方法的過載是不同的方法叫了同樣的名字,而方法的覆蓋是同乙個方法在子類和父類之間的多型表現。1 方法的覆蓋是子類和父類之間的關係,是垂直關係 方法的過載是同乙個類中方法之間的關係,是水平關係。2 覆蓋只能由乙個方法,或只能由一對方法產生關係 方法的過載是多個方法之間的關係。3 覆蓋...
Java基礎 方法的過載和覆蓋
override可以翻譯為覆蓋,有時也叫重寫,從字面就可以知道,它是覆蓋了乙個方法並且對其重寫,以求達到不同的作用。對我們來說最熟悉的覆蓋就是對介面方法的實現。overload overloading 對我們來說可能比較熟悉,可以翻譯為過載,它是指我們可以定義一些名稱相同的方法,通過定義不同的輸入引...