在使用C#語言時,發現一下有關類實例化的問題,在此之前先復習一下類和對象的概念,類是一個抽象體,是對一類事物的抽象體;而對象就是一個具體的事物,對象的抽象就是類。車就是一個類,而車包括面包車,小汽車,跑車等這些對象,如果維修一輛車,我不能說我維修車,而你維修的是一輛能看得見,摸得着的具體的這輛小汽車。所以要使用類,必須通過對象來達到效果。
【需實例化】
在使用類的非靜態方法或屬性時,必須將類實例化
可以這樣理解,把類比做蓋房的圖紙,如果要使用房子的功能,如住人,得有真實存在的房子實體才行,所以要想使用房子的功能,需要把圖紙轉化為房子實體,這個過程就稱為實例化過程。
以下代碼中,要想調用Name屬性和shout方法,必須先將Cat類實例化
class Program { static void Main(string[] args) { Cat c = new Cat(); c.Name = "小貓"; c.shout(); Console.Read(); } } class Cat { string name ; public string Name { get { return name; } set { name = value; } } public void shout() { Console.WriteLine("我是{0},喵",Name); } }
【不需實例化】
在使用類的靜態方法或屬性時,不用將類實例化
可以這樣理解,我想使用圖紙上房子的長寬高時,我不必先建一座房子才能知道或使用它的長寬高,我可以直接把值從圖紙上拿出來使用,只要是這個值,建的房子的長寬高都一樣,所以就不需要實例化了,此種情況長寬高就為靜態屬性/方法。
以下代碼中,Name屬性和shout方法可以通過類直接調用(與上面不同之處就是在字段、屬性、方法之前加了關鍵字static)
class Program { static void Main(string[] args) { Cat.Name = "小貓"; Cat.shout(); Console.Read(); } } class Cat { static string name ; public static string Name { get { return name; } set { name = value; } } public static void shout() { Console.WriteLine("我是{0},喵",Name); } }