C 學習筆記(二)隱藏和覆蓋(重寫)

2021-08-18 03:55:27 字數 1508 閱讀 3646

如果基類和派生類宣告了兩個具有相同簽名的方法,編譯時會顯示乙個警告。

方法簽名由方法名、引數數量和引數型別共同決定,方法的返回型別不計入簽名。

派生類方法會隱藏(或遮蔽)基類中具有相同簽名的方法。

——《visual c#2013從入門到精通》

class animal

class cat : animal

class program

", cat.age);

animal animal = new animal();

console.writeline("animal's age is ", animal.age);

}}

執行結果:

class animal

",age);

}}

class cat : animal

", age);

}}

class program

}

cat's age is 12

animal's age is 24

animal's age is 24

覆蓋: 如果希望改進父類的某個虛方法,使用override關鍵字覆蓋父類的方法,提供自己的實現就可以了。

當覆蓋虛方法時,覆蓋的方法必須與被覆蓋的方法具有相同的方法簽名。

子類的override方法在名稱、引數型別、引數名稱、引數順序、返回值型別都必須與基類中的虛方法完全一樣。

class animal

",age);

}}

class cat : animal

", age);

}}

class program

}

執行結果:

cat's age is 12

animal's age is 24

cat's age is 12

隱藏pk覆蓋

隱藏在靜態編譯的確定執行物件。

覆蓋在動態編譯時確定執行物件。

觀察**中黃色標明的部分,在隱藏時,宣告的物件是aniaml型別,就決定了呼叫的函式是animal這個父類中的函式。而在覆蓋的時候,雖然宣告的物件是animal,但是在動態編譯的過程中發現實際執行的是cat物件,就會呼叫cat中的方法。體現了繼承的多型性。

需要注意的幾點:

1.虛方法和覆蓋(重寫)方法的簽名必須是一致的。

2.只能重寫虛方法,其他方法不能被重寫。

3.如果派生類不用override關鍵字宣告方法,就不是覆蓋(重寫)基類方法,而是隱藏基類方法。

4.兩個方法必須具有相同的可訪問性。

5.重寫方法隱式地成為虛方法,可在派生類中重寫。

c 多型 重寫 覆蓋 隱藏 過載

多型 重寫 覆蓋 c 中多型是指同乙個操作作用於不同的物件可以有不同的解釋,產生不同的執行結果,多型是通過虛函式實現的,在派生類中重寫基類的虛函式。呼叫方法 宣告基類的指標,利用該指標指向派生類物件,就可以用該指標呼叫派生類中重寫後的虛函式。這樣就可以根據指向的派生類不同,而實現不同的方法。多型的特...

C 成員函式過載 覆蓋 重寫 和隱藏

區分成員函式過載 覆蓋 重寫 和隱藏的不同含義,禁止用隱藏方式定義非virtual成員函式 成員函式被過載的特徵 1 相同的範圍 在同乙個類中 2 函式名字相同 3 引數不同 覆蓋是指派生類函式覆蓋基類函式,特徵是 1 不同的範圍 分別位於派生類與基類 2 函式名字相同 3 引數相同 4 基類函式必...

C 過載 重寫 覆蓋 和隱藏的區別

成員函式過載 overload 的特徵 1 相同的範圍 在同乙個類中 2 函式名相同 3 函式引數個數或者函式引數型別不相同 4 virtual關鍵字可有可無。作用 同一方法,根據傳遞訊息的不同 型別或者個數 產生不同的動作 相同的方法名,實現不同 重寫也叫覆蓋 override 覆蓋是指派生類的函...