java 方法覆蓋 方法過載和多型

2021-09-12 02:03:02 字數 1308 閱讀 7408

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 對我們來說可能比較熟悉,可以翻譯為過載,它是指我們可以定義一些名稱相同的方法,通過定義不同的輸入引...