C#之繼承
阿新 • • 發佈:2020-12-20
繼承特性描述:
繼承性是面向物件程式設計語言的另一基本特徵,通過繼承,可以實現程式碼的複用。運用繼承,你能夠建立一個通用類,它定義了一系列相關專案的一般特性。該類可以被更具體的類繼承,每個具體的類都增加一些自己特有的東西。繼承而得到的類為子類,被繼承的類為基類或父類。繼承是子類利用父類中定義的方法和變數,就像它們屬於子類本身一樣。
C#中不支援類之間的多重繼承(注:C#支援介面之間的多重繼承),即不允許一個子類繼承多個父類。 不要混淆的是,C#支援多層繼承,用一個子類作為另一個類的父類是完全可以接受的。也就是說,你可以如你所願的建立包含任意多層繼承的類層次。例如,給定三個類A、B和C。C是B的一個子類,而B又是A的一個子類。當這種型別的情形發生時,每個子類繼承它的所有父類的屬性,於是這種情況下,C就繼承了B和A的所有方面。 如果預設:基類,則該類為Object的子類。Object類沒有任何直接或間接基類,並且是所有其他類的最終基類。無論基類成員的可訪問性如何,除建構函式和解構函式外,
所有其他基類的成員都能夠被子類繼承。然而,有些繼承成員在派生類中是不可訪問的,取決於基類成員的可訪問性。
虛方法與重寫方法
如果一個例項方法的宣告中有virtual修飾符,那麼這個方法為虛方法。如果一個例項方法的宣告中有override修飾符,重寫方法用相同的簽名重寫所繼承的虛方法。在虛方法呼叫中,物件的執行時型別確定了要被呼叫的究竟是方法的哪一個實現。
只有在包含了override修飾符時,一個方法才能重寫另一個方法。否則,宣告一個從基類繼承而來的具有相同簽名的方法只會隱藏被繼承的基類方法。重寫方法允許通用類指定方法,這些方法對該類的所有派生類都是公用的,同時該方法允許子類定義這些方法中的某些或全部的特殊實現。
using System;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
SuperClass superClass = new SubClass();
superClass.Method();
Console.ReadKey();
}
}
public class SuperClass { public SuperClass() { Console.WriteLine("In SuperClass.Consturctor"); } public virtual void Method() { Console.WriteLine("In SuperClass.Method()"); } } public class SubClass:SuperClass { public SubClass() { Console.WriteLine("In SubClass.ConsTructor"); } public override void Method() { Console.WriteLine("呼叫成功"); } }
}