C#入門經典(重要知識點)
阿新 • • 發佈:2018-02-02
指向 ack div abstract 傳遞 修飾 多少 new blog
一、重載和覆蓋的區別:
相同點: 都涉及兩個同名的方法。
不同點: 1.類層次 :重載涉及的是同一個類的兩個同名方法;.覆蓋涉及的是子類的一個方法和父類的一個方法,這兩個方法同名。
2.參數和返回值 : 重載的兩個方法具有不同的參數,可以有不同返回值類型;覆蓋的兩個方法具有相同的參數,返回值類型必需相同。
二、方法的隱藏(關鍵字new)
若覆蓋時沒有使用virtual和override關鍵字,則稱子類的方法隱藏了父類的方法。
此時編譯器報警告。若要消除掉警告,可以使用new修飾符。 C# 會根據引用的類型決定調用哪個類的方法。
關鍵字new和override的區別:
(1).new修飾的方法表示顯式隱藏基類繼承的同名方法,不能夠用基類的引用訪問派生類的new方法。
(2).override表示重寫基類的虛方法,可以用基類的引用指向派生類對象來訪問派生類的重寫方法。
三、密封類(關鍵字sealed)
C#提供一種不能被繼承的類,稱為密封類。密封類的聲明方法是在類名前加上sealed修飾符。修飾符abstract和sealed不能同時使用。
四、多態
(1)編譯時多態——重載;(2)運行時多態——動態綁定(虛函數)
五、參數數組(params)
在不能確定需要傳遞多少個參數的時候可以使用params關鍵字指明一個可變的參數數組。
數組參數的類型必須是一維數組,而且必須是形參表中的最後一個參數。
數組參數始終是值傳遞方式進行傳遞,不能將params同ref和out組合。(引用參數——ref,輸出參數——out)
eg: params int[ ] Nums
C#入門經典(重要知識點)