1. 程式人生 > >C#入門經典(重要知識點)

C#入門經典(重要知識點)

指向 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#入門經典(重要知識點)