c# 事實證明,abstract類除了不能用new實例化和類沒什么區別


abstract類是抽象類,不能夠實例化,大家都知道,abstract類往往和接口interface一塊兒使用,針對接口中一些公共的方法進行實現,然后實體類去繼承抽象類和接口。雖然abstract類不能實例化,但是abstract類可以有構造函數,其構造函數和實體類的構造函數沒什么區別。如下:

 abstract class A
    {
        public A()
        {
            Console.Write("A  ");
        }

        public virtual void Method()
        {
            Console.Write("AMethod ");

        }
    }


    class B:A
    {
        public B()
        {
            Console.Write("B ");
        }

        public new void Method()
        {
            Console.Write("BMethod ");

        }
    }

今天遇到一個問題是這樣:

 A o = new B();
 o.Method();

猜想輸出結果是什么呢?我第一眼給出的答案是B AMethod;在我想象中抽象類A不能夠實例化,所以A的構造函數無效。

運行以后發現答案是A B AMethod;這說明了abstract類的構造函數和類的構造函數是一樣的,可以被子類繼承,只能不能用new創建而已。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM