专注

导航

面向对象基础-接口

在动物比赛中有一个比较特殊的比赛是为了给特异功能的动物展示其特殊的才能的。比如:机器叮当猫,石猴孙悟空,肥猪猪八戒,蜘蛛人等等。

4

 

变出东西应该是叮当猫、孙悟空、猪八戒的行为方法,要想用多态,就得让猫、候、猪都有“变出东西(特异功能)”能力,而为了具有普遍意义,干脆让动物都具有“变出东西(特异功能)”等行为,但是,我们发现,不是所有动物都具有“变出东西(特异功能)”的能力。只有Cat/Pig/Monkey有,这个时候,我们就会用到接口。

5

当然也可以是这样子

6

还有一种形式

7 

一个类可以支持多个接口,多个类也可以支持相同的接口。
所以,我们可以声明一个接口:

   1:      interface Ichange 
   2:      { 
   3:          string ChangeThing(string thing); 
   4:      } 

然后创建机器猫的类

   1:      class MachineCat:Cat,Ichange 
   2:      { 
   3:          public MachineCat() 
   4:              : base() 
   5:          { } 
   6:          public MachineCat(string name) 
   7:              : base(name) 
   8:          { } 
   9:          public string ChangeThing(string thing) //-------这里不需要override,因为是现实接口,重写继承 
  10:          { 
  11:              return base.Shout() + ",我有万能口袋,我可以变出:" + thing; 
  12:          } 
  13:      } 
  14:       //其余的StoneMonkey一样可以这样子创建 
  15:          private void button4_Click(object sender, EventArgs e) 
  16:          { 
  17:              MachineCat mcat = new MachineCat("叮当"); 
  18:              Ichange[] array = new Ichange[1]; 
  19:              array[0] = mcat; 
  20:              MessageBox.Show(array[0].ChangeThing("各种各样的东西")); 
  21:          } 

posted on 2011-11-13 12:35  陈啊M  阅读(179)  评论(0编辑  收藏  举报