私有構造函數的特色和用途

本篇體驗私有構造函數的特色,以及在何種狀況下使用私有構造函數。函數

 

□ 帶私有構造函數的類不能被繼承spa

在Animal類中聲明一個私有構造函數,讓Dog類來繼承Animal類。
blog

    public class Animal
    {
        private Animal()
        {
            Console.WriteLine("i am animal");
        }
    }
    public class Dog : Animal
    {
        
    }

  生成解決方案,報錯以下:   
1繼承

 

□ 帶私有構造函數的類不能被實例化路由

    class Program
    {
        static void Main(string[] args)
        {
            Animal animal = new Animal();
        }
    }
    public class Animal
    {
        private Animal()
        {
            Console.WriteLine("i am animal");
        }
    }

生成解決方案,報錯以下:
2get

 

□ 私有構造函數的應用string

有些時候,咱們不但願一個類被過多地被實例化,好比有關全局的類、路由類等。這時候,咱們能夠爲類設置構造函數並提供靜態方法。it

    class Program
    {
        static void Main(string[] args)
        {
            string str = Animal.GetMsg();
            Console.WriteLine(str);
            Console.ReadKey();
        }
    }
    public class Animal
    {
        private Animal()
        {
            Console.WriteLine("i am animal");
        }
        public static string GetMsg()
        {
            return "Hello World";
        }
    }

 

總結:一旦一個類被設置成私有構造函數,就不能被繼承,不能被實例化,這種狀況下,一般爲類提供靜態方法以供調用。class

相關文章
相關標籤/搜索