看了上篇的 《C# 屬性(通俗理解)》之後繼續往下。當讓你實現很多動物都要實現這個方法然後輸出結果,於是代碼變成這樣:
1 namespace ConsoleApplication7 2 { 3 public class Dog 4 { 5 private string name; 6 public string Name 7 { 8 get { return name; } 9 set { name = "新鮮的"+value; } 10 } 11 public void Show() 12 { 13 Console.WriteLine("小狗喜歡吃:"+name); 14 } 15 } 16 17 public class Mouse 18 { 19 private string name; 20 public string Name 21 { 22 get { return name; } 23 set { name = "新鮮的" + value; } 24 } 25 public void Show() 26 { 27 Console.WriteLine("老鼠喜歡吃:" + name); 28 } 29 } 30 31 public class Panda 32 { 33 private string name; 34 public string Name 35 { 36 get { return name; } 37 set { name = "新鮮的" + value; } 38 } 39 public void Show() 40 { 41 Console.WriteLine("熊貓喜歡吃:" + name); 42 } 43 } 44 45 46 }
調用前台的代碼:
1 namespace ConsoleApplication7 2 { 3 class Program 4 { 5 static void Main(string[] args) 6 { 7 Dog dog = new Dog(); 8 dog.Name = "骨頭"; 9 dog.Show(); 10 //輸出結果// 小狗喜歡吃:骨頭 11 12 13 Cat cat = new Cat(); 14 cat.Name = "魚"; 15 cat.Show(); 16 //輸出結果// 小貓喜歡吃:魚 17 18 Mouse mouse = new Mouse(); 19 mouse.Name ="大米"; 20 mouse.Show(); 21 //輸出結果// 老鼠喜歡吃:魚 22 23 Panda panda = new Panda(); 24 panda.Name = "竹子"; 25 panda.Show(); 26 //輸出結果// 熊貓喜歡吃:魚 27 28 Console.ReadKey(); 29 30 } 31 } 32 }
如你所見,在各種動物類裡面,每個動物類都有重復的name這個字段,也就是寫了很多重復的代碼,如何把重復的代碼只要寫一遍就好?於是用到了繼承,什麼是繼承?繼承是子類繼承了父類,就能擁有父類的東西,比如:你爸有1000W,你繼承了你爸的財產,你就可以使用這1000W了。
所以在這裡把字段name寫到父類裡,我這裡聲明一個父類叫:Animal吧。
1 namespace ConsoleApplication7 2 { 3 public class Animal 4 { 5 protected string name; 6 public string Name 7 { 8 get { return name; } 9 set { name = "新鮮的" + value; } 10 } 11 } 12 }
其它動物類都要去繼承Animal類如下:
1 namespace ConsoleApplication7 2 { 3 public class Cat : Animal 4 { 5 public void Show() 6 { 7 Console.WriteLine("小貓喜歡吃:" + name); 8 } 9 } 10 11 public class Dog : Animal 12 { 13 public void Show() 14 { 15 Console.WriteLine("小貓喜歡吃:" + name); 16 } 17 } 18 19 public class Mouse : Animal 20 { 21 public void Show() 22 { 23 Console.WriteLine("老鼠喜歡吃:" + name); 24 } 25 } 26 27 public class Panda : Animal 28 { 29 public void Show() 30 { 31 Console.WriteLine("熊貓喜歡吃:" + name); 32 } 33 } 34 35 }
前台代碼不變,看看結果:
這就體現了復用性,重復的地方只要寫一次。