抽象類可以有構造函數嗎


我們知道,抽象類是不能被實例化的。但抽象類是否可以有構造函數?答案是可以有。抽象類的構造函數用來初始化抽象類的一些字段,而這一切都在抽象類的派生類實例化之前發生。不僅如此,抽線類的構造函數還有一種巧妙應用:就是在其內部實現子類必須執行的代碼。

 

以下就是在抽象類的構造函數中來初始化字段。

    class Program
    {
        static void Main(string[] args)
        {
            Employee employee = new Employee();
            Console.WriteLine(employee.ID);
            Console.ReadKey();
        }
    }
    public abstract class Base
    {
        private Guid _id;
        public Base()
        {
            this._id = Guid.NewGuid();
        }
        public Guid ID
        {
            get { return this._id; }
        }
    }
    public class Employee : Base
    {
        
    }

 

總結:雖然抽象類不能被實例化,但可以有構造函數。由於抽象類的構造函數在實例化派生類之前發生,所以,可以在這個階段初始化抽象類字段或執行其它與子類相關的代碼。


免責聲明!

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



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