方法重寫用于繼承層次結構中的面向對象編程,當在子類中重新定義超類中定義的方法時,會發生這種情況。通常,子類方法執行與超類方法不同的操作或擴展超類的功能,但事實并非如此。每當在子類中重定義超類方法時,無論重定義方...
方法重寫用于繼承層次結構中的面向對象編程,當在子類中重新定義超類中定義的方法時,會發生這種情況。通常,子類方法執行與超類方法不同的操作或擴展超類的功能,但事實并非如此。每當在子類中重定義超類方法時,無論重定義方法的內容如何,都會發生方法重寫。重定義的方法簽名必須完全相同。在面向對象的計算機編程中,當在子類中重新定義超類中定義的方法時。例如,類a可能包含名為“doSomething”的方法,而此方法不接受輸入參數。此外,類B和C可能是類a的子類。類B可能包含一個名為“doSomething”的方法,該方法不需要輸入參數,而C類可能包含一個以數字作為輸入參數的方法“doSomething”。在本例中,只有類B將演示方法重寫,因為它的“doSomething”方法與它的超類class class a具有相同的方法簽名。另一方面,類C中的“doSomething”方法演示了方法重載,因為它創建了一個全新的方法。C中的虛擬繼承是方法重寫的另一個例子。超類中的虛擬方法可能實現,也可能不實現,但它們的任何子類定義都是方法重寫的實例。當方法在子類中被重寫時,除非顯式調用超類的方法,否則不會調用它。這種調用重寫方法的特定方法通常被稱為“隱藏”超類實現。盡管方法重寫非常靈活,但并非所有方法都可以被重寫,有時這種剛性可能更可取在Java和C中,可以在方法簽名中應用特定的關鍵字,以防止方法在子類中被重寫,和C使用“const”關鍵字。如果在繼承樹中某個特定函數應該始終保持不變,則防止方法重寫是有益的,獲取小塊數據的簡單方法不應被重寫。從重寫中受益最大的情況是,子類的目標是在沒有創建全新方法的情況下向超類方法添加功能。對于某個特定類型的對象,需要完全重做某個方法的異常情況可能會發生也可以從這項技術中獲益。每當方法被重寫時,程序員對超類和子類方法都要有充分的注釋。理想情況下,這些注釋應該闡明方法的每個變體都做了什么,以及它們之間的區別和區別的原因
-
發表于 2020-08-06 23:49
- 閱讀 ( 814 )
- 分類:電腦網絡