本篇體驗私有構造函數的特點,以及在何種情況下使用私有構造函數。
□ 帶私有構造函數的類不能被繼承
在Animal類中聲明一個私有構造函數,讓Dog類來繼承Animal類。
public class Animal{PRivate Animal(){Console.WriteLine("i am animal");}}public class Dog : Animal{}
  生成解決方案,報錯如下:    ![]()
□ 帶私有構造函數的類不能被實例化
class Program{static void Main(string[] args){Animal animal = new Animal();}}public class Animal{private Animal(){Console.WriteLine("i am animal");}}
生成解決方案,報錯如下:![]()
□ 私有構造函數的應用
有些時候,我們不希望一個類被過多地被實例化,比如有關全局的類、路由類等。這時候,我們可以為類設置構造函數并提供靜態方法。
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";}}
總結:一旦一個類被設置成私有構造函數,就不能被繼承,不能被實例化,這種情況下,通常為類提供靜態方法以供調用。
新聞熱點
疑難解答