标签:
要是让你实现一只狗,输出它吃骨头,这个程序很简单。
新建一个Dog类:
1 public class Dog 2 { 3 public string name; 4 5 public void Show() 6 { 7 Console.WriteLine("小狗喜欢吃:"+name); 8 } 9 10 }
前台调用:
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 Console.ReadKey(); 13 14 } 15 } 16 }
这时又要你实现一只猫,输出它吃鱼,没问题。只要新建一个Cat类就好,跟Dog类一样的道理。
1 public class Cat 2 { 3 private string name; 4 5 public void Show() 6 { 7 Console.WriteLine("小猫喜欢吃:"+name); 8 } 9 10 11 }
前台只要调用就行:
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 Console.ReadKey(); 19 20 } 21 } 22 }
目前为止没有任何问题,但是现在要你加上:小狗吃新鲜的骨头,小猫吃新鲜的鱼,你会怎么做?
在方法里面修改成下面形式?
Console.writeLine(“小狗喜欢吃新鲜的:”+name)
Console.writeLine(“小猫喜欢吃新鲜的:”+name)
但是方法是动作,所以不应该写在这里,
你可能会说在前台拼接"新鲜的"不就好了?
Dog dog = new Dog();
dog.name = "新鲜的" + "骨头";
dog.Show();
Cat cat = new Cat();
cat.Name = "新鲜的" + "鱼";
cat.Show();
没错,这样确实可以。接下来就是问题来了,假如A页面也需要这个实现,B页面也需要这个实现,C页面也需要这个实现。。。。。并且这些所有页面用到的都要
改成:小狗吃美味的骨头,小猫吃美味的鱼。你一定抓狂,那么多页面,都要去修改。
在这个情况使用 属性封装字段
Dog类变成:
1 namespace ConsoleApplication7 2 { 3 public class Dog 4 { 5 private string name; 6 7 public string Name 8 { 9 get { return name; } 10 set { name = "新鲜的"+value; } 11 } 12 13 public void Show() 14 { 15 Console.WriteLine("小狗喜欢吃:"+name); 16 } 17 18 19 } 20 }
当使用了属性,可以看到,不管是新鲜的,美味的,可口的,好吃的,。。。。只要改变这个类的字段的地方就行,前台不用管,也不用管多少个页面会用到,因为都会使
用这个类。
标签:
原文地址:http://www.cnblogs.com/hamburger/p/4503730.html