1. 程式人生 > >過載(Overloads)、重寫(Overrides)和隱藏(Shadows) 的區別及用法

過載(Overloads)、重寫(Overrides)和隱藏(Shadows) 的區別及用法

過載、重寫和隱藏是很容易混淆的類似概念。雖然所有這三種技術都使您得以建立同名的成員,但它們之間有一些重要的差異。

  • 過載的成員用於提供屬性或方法的不同版本,這些版本具有相同名稱但是接受不同數量的引數或者接受不同資料型別的引數。

  • 重寫的屬性和方法用於替換在派生類中不適合的繼承的屬性或方法。重寫的成員必須接受同一資料型別和引數數量。派生類繼承重寫的成員。

  • 隱藏的成員用於區域性替換具有更廣範圍的成員。任何型別都可隱藏任何其他型別。例如,可宣告隱藏同名繼承方法的屬性。無法繼承隱藏的成員。

一、過載屬性和方法

  過載是在一個類中用相同的名稱但是不同的引數型別建立一個以上的過程、例項建構函式或屬性。

1、過載用法

  當物件模型指示對於在不同資料型別上進行操作的過程使用同樣名稱時,過載非常有用。例如,可顯示幾種不同資料型別的類可以具有類似如下所示 Display 過程:

?
Overloads Sub Display(ByVal theChar As Char) ' Add code that displays Char data. End Sub Overloads Sub Display(ByVal theInteger As Integer) ' Add code that displays Integer data.
End Sub Overloads Sub Display(ByVal theDouble As Double) ' Add code that displays Double data. End Sub

如果不使用過載,那麼即使每個過程執行相同的操作,也需要為它們建立不同的名稱,如下所示:

?
Sub DisplayChar(

相關推薦

過載(Overloads)重寫(Overrides)隱藏(Shadows) 的區別用法

過載、重寫和隱藏是很容易混淆的類似概念。雖然所有這三種技術都使您得以建立同名的成員,但它們之間有一些重要的差異。 過載的成員用於提供屬性或方法的不同版本,這些版本具有相同名稱但是接受不同數量的引數或者接受不同資料型別的引數。 重寫的屬性和方法用於替換在派生類中不適合的繼承的屬性

[C++]成員函式的過載(overload)覆蓋(override)隱藏(hide)

C++成員函式的過載、覆蓋和隱藏 1. 過載與覆蓋 成員函式被過載的特徵是: 具有相同的作用域(即同一個類定義中); 函式名字相同; 引數型別、順序或數目不同(包括); virtual 關鍵字可有可無。 覆蓋是指派生類重新實現(或者改寫)了基

“overload”過載“override”覆蓋隱藏區別

“overload”翻譯過來就是:超載,過載,過載,超出標準負荷;“override”翻譯過來是:重置,覆蓋,使原來的失去效果。 先來說說過載的含義,在日常生活中我們經常要清洗一些東西,比如洗車、洗衣服。儘管我們說話的時候並沒有明確地說用洗車的方式來洗車,或者

Python中threading的joinsetDaemon的區別用法

退出 mon comment ber .cn 結束 必須 用法 方法 Python多線程編程時經常會用到join()和setDaemon()方法,基本用法如下: join([time]): 等待至線程中止。這阻塞調用線程直至線程的join() 方法被調用中止-正常退出或者

(void)00的區別用法

(void)0相當於巨集NULL,NULL本身的含義為“空”,在c語言代表“不存在、不確定”的含義。 0不能簡單的理解為“沒有”的意思,在c語言及二進位制中,0和1代表的是“一件事物的正反兩個方面“,0是一種明確的狀態,不是沒有含義。 舉例: 1、就像一個led燈開關一

Python中threading的joinsetDaemon的區別用法[例子]

Python多執行緒程式設計時,經常會用到join()和setDaemon()方法,今天特地研究了一下兩者的區別。 1、join ()方法:主執行緒A中,建立了子執行緒B,並且在主執行緒A中呼叫了B.join(),那麼,主執行緒A會在呼叫的地方等待,直到子執行

Java之集合框架圖 CollectionCollections的區別用法總結

Java中Collection和Collections的區別: 1、Java集合框架圖: 2、Collection介面:   java.util.Collection是一個集合介面,其中定義了對集合物件有關操作的普通介面方法。   Set和List集合型別(不包含Map)

cookiesession的區別用法(PHP5)

1、HTTP協議本身是無狀態的。    我們上網都要靠HTTP協議傳遞資訊。比如我們在瀏覽器裡鍵入:www.bokee.com這個網址並回車,你會發現網址會變成:http://www.bokee.com,其原因就是瀏覽的網頁是基於http協議的。http協議無法記錄使用者

C++中過載重寫(覆蓋)隱藏區別例項分析

本文例項講述了C++中過載、重寫(覆蓋)和隱藏的區別,對於C++面向物件程式設計來說是非常重要的概念。具體分析如下: 1.過載:過載從overload翻譯過來,是指同一可訪問區內被宣告的幾個具有不同引數列(引數的型別,個數,順序不同)的同名函式,根據引數列表確定呼叫哪個函式,過載不關心函式返回型

C++中過載重寫(覆蓋)隱藏區別

基本概念: 過載:是指同一可訪問區內被宣告的幾個具有不同引數列(引數的型別,個數,順序不同)的同名函式,根據引數列表確定呼叫哪個函式,過載不關心函式返回型別。 示例: class A{ public: void test(int i); voi

c++ --> 過載重寫(覆蓋)隱藏區別

過載、重寫(覆蓋)和隱藏的區別 一、過載   過載從overload翻譯過來,是指同一可訪問區內被宣告的幾個具有不同引數列(引數的型別,個數,順序不同)的同名函式,根據引數列表確定呼叫哪個函式,過載不關心函式返回型別。 示例程式碼如下: classA{ public: void test(

Java 重載重寫隱藏區別

目標 phi 為什麽不能 int title ide 修改 cati 修飾 Java 重載、重寫和隱藏的區別 一、重載(Overload) 註意:為了正確的區分重載和重寫,請各位務必記清重載(Overload)和重寫(Override)的英文。 (1)重載定義:表示

C++中重載重寫(覆蓋)隱藏區別

post space csdn depend amp 不同類 sin ase 返回 轉載自:https://blog.csdn.net/zx3517288/article/details/48976097 基本概念: 重載:是指同一可訪問區內被聲明的幾個具有不同參數列(參數

面試題16——簡述類成員函式的重寫過載隱藏區別

重寫與過載主要有以下不同: (1)範圍的區別:被重寫的和重寫的函式在兩個類中,而過載和被過載的函式在同一個類中; (2)引數的區別:被重寫函式和重寫函式的引數列表一定相同,而被過載函式和過載函式的引數列表一定不同; (3)virtual的區別:重寫的基類中被重寫的函式必須要有virtual修

C++中過載覆蓋隱藏區別,以及適用場景

一、過載、覆蓋和隱藏的區別 二、適用場景 1、過載:   適用於不同的資料型別都需要使用到的功能函式。以資料相加的函式為例,可以在同一個檔案內提供以下的過載函式以支援同樣的功能:   int add(int, int);/*2個整數相加*/   int add(int, int, int);/*3個整數相

java的過載覆蓋隱藏區別

過載:方法名相同,但引數不同的多個同名函式   注意:1.引數不同的意思是引數型別、引數個數、引數順序至少有一個不同      2.返回值和異常以及訪問修飾符,不能作為過載的條件(因為對於匿名呼叫,會出現歧義,eg:void a ()和int a() ,如果呼叫a(),出現歧義)      3.main方

【C++基礎】過載overload重寫(覆蓋)override隱藏hide的區別

過載overload 過載是指不同的函式使用相同的函式名,但是函式的引數個數或型別不同。呼叫的時候根據函式的引數來區別不同的函式。 相同的範圍(在同一個類中)函式名字相同引數不同virtual可有可無編譯期繫結,與多型無關 重寫(覆蓋)override 重寫/覆蓋是在在

C++中類成員函式的過載覆蓋隱藏區別,超清楚!

1.成員函式被過載的特徵: (1)相同的範圍(在同一個類中); (2)函式名字相同; (3)引數不同; (4)virtual 關鍵字可有可無。 2.覆蓋是指派生類函式覆蓋基類函式,特徵是: (1)不同的範圍(分別位於派生類與基類); (2)函式名字相同;

類成員的函式的過載覆蓋隱藏區別

參考:https://www.nowcoder.com/questionTerminal/266d3a6d4f1b436aabf1eff3156fed951.函式過載的特徵:(1)必須在同一個類中(相同範圍)(2)函式名字必須相同但是函式型別可以不相同(3)引數類表可以不同(

C++中過載覆蓋隱藏區別

一、過載: 是函式名相同,引數列表不同 過載只是在類的內部存在。但是不能靠返回值型別來判斷。規則如下:1、相同的範圍(在同一個類中)2、函式名字相同3、引數不同4、Virtual關鍵字可有可無、二、覆蓋: 在繼承關係中,子類中定義了與父類同名的虛擬函式,從而子類自己本身定義的