php重寫與過載

2021-09-29 09:58:09 字數 1375 閱讀 6809

過載、重寫和重構在之前就學習過,但到現在仍然不能準確的說出它們到底有什麼區別,該怎麼具體的應用,看來真是書到用時方恨少,這種狀況是不是特別嚴重?真的該總結回顧了。

重寫(override):

什麼是重寫:

子類可繼承父類中的方法,而不需要重新編寫相同的方法。但有時子類並不想原封不動地繼承父類的方法,而是想作一定的修改,這就需要採用方法的重寫(重寫的方法和父類的方法名稱一定要相同,引數的型別、個數也要相同)。方法重寫又稱方法覆蓋。

重寫的規則:

1、必須在繼承裡(基類中的方法用virtual關鍵字來標識,然後在繼承類中對該類進行重寫(override),這樣基類中的方法已經被重寫了,已經失去了功能)。

2、重寫方法的引數列表必須完全與被重寫的方法的相同,否則不能稱其為重寫而是過載。

3、重寫的方法的返回值必須和被重寫的方法的返回一致; 

4、重寫方法的訪問修飾符一定要大於被重寫方法的訪問修飾符(public>protected>default>private)。 

5、重寫的方法所丟擲的異常必須和被重寫方法的所丟擲的異常一致,或者是其子類; 

6、被重寫的方法不能為private,否則在其子類中只是新定義了乙個方法,並沒有對其進行重寫。 

7、靜態方法不能被重寫為非靜態的方法。

舉例:public class baseclass

public virtual void functionb()

}public class derivedclass:baseclass

public override void functionb()

}執行:

baseclass basefunction=new derivedclass();

basefunction.functiona();

basefunction.functionb();

執行結果:

basefunctiona 

derivedfunctionb 

過載(overload):

什麼是過載:

簡單說,過載就是函式或者方法有同樣的名稱,但是引數列表不相同,這樣的同名不同引數的函式或者方法之間,互相稱之為過載函式或者方法(發生在同一類中,方法名相同,引數列表()不同)。

過載作用:

傳遞不同的引數實現相同的效果。

過載函式通常用來命名一組功能相似的函式,這樣做減少了函式名的數量,避免了名字空間的汙染,對於程式的可讀性有很大的好處。

過載的規則:

1、在使用過載時只能通過相同的方法名、不同的引數形式實現。不同的引數型別可以是不同的參

型別,不同的引數個數,不同的引數順序(引數型別必須不一樣);

2、不能通過訪問許可權、返回型別、丟擲的異常進行過載;

3、方法的異常型別和數目不會對過載造成影響;

php之重寫與過載

1.重寫 覆蓋override 子類重寫了父類的同名方法的內容 例如 class human class stu extends human ming new stu ming say 張三 ming say 2.過載 overloading 存在多個同名的方法,但是引數型別 個數不同 傳不同的引數...

php過載和重寫 PHP過載

整理思路時想到乙個問題 php為什麼不允許同名函式存在?即不允許常見於其他語言的過載機制?過載和重寫 先區分一下過載 overload 和重寫 override 過載指多個名字相同,但引數不同的函式在同一作用域並存的現象 重寫出現在繼承中,指子類重定義父類功能的現象,也被稱為覆蓋。過載中說的引數不同...

重寫與過載

override 為覆蓋又叫重寫,從字面就可以知道,它是覆蓋了乙個方法並且對其重寫,以求達到不同的作用。對我們來說最熟悉的覆蓋就是對介面方法的實現,在介面中一般只是對方法進行了宣告,而我們在實現時,就需要實現介面宣告的所有方法。除了這個典型的用法以外,我們在繼承中也可能會在子類覆蓋父類中的方法。在覆...