首页 > 代码库 > 面向对象多态之接口
面向对象多态之接口
申明下:我也是新手,以下如有不对或不合适的地方望指出,一起交流O(∩_∩)O哈!
好了,转入正题
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 namespace Interface 7 { 8 class InterfaceTest 9 { 10 static void Main(string[] args) 11 { 12 #region 测试Cat,Monkey,Bear类 13 introduction test; 14 for (int i = 1; i<=3; i++) 15 { 16 switch (i) 17 { 18 case 1: 19 test = new Cat(); 20 test.speak(); //亲们,我的名字test有魅力么 21 break; 22 case 2: 23 test = new Bear(); 24 test.speak(); //亲们,我的名字test有魅力么 25 break; 26 case 3: 27 test = new Monkey(); 28 test.speak(); //亲们,我的名字test有魅力么 29 break; 30 } 31 32 } 33 #endregion 34 35 36 #region 好了,不用多态的方式去达到上边的效果,Thinking,该如何实现 37 for (int i = 1; i <= 3; i++) 38 { 39 switch (i) 40 { 41 case 1: 42 Cat cat=new Cat(); 43 cat.speak(); //亲们,我的名字好别扭o(>﹏<)o呃呃呃 44 break; 45 case 2: 46 Bear bear=new Bear(); 47 bear.speak(); //亲们,我的名字好别扭o(>﹏<)o呃呃呃 48 break; 49 case 3: 50 Monkey monkey=new Monkey(); 51 monkey.speak(); //亲们,我的名字好别扭o(>﹏<)o呃呃呃 52 break; 53 } 54 } 55 /* 好了,两种方式你发现了什么呢?神马,不会什么都没看出来么,想想,如果,有一天,我也一统天下,我的名字不再叫Cat,Bear和Monkey了, 56 那上面两种方式各需要做哪些改动呢?对于第二种我想说:天哪,我疯了,幸亏我只用了三次,用多了,这,哪改的完呢 57 */ 58 59 /* 重要:上面的方式之所以可以用接口去调用各个继承了它的类的方法,是因为,听着:父类引用指向子类对象!!!好了,你可以说我 60 Cat test=new Cat(),Bear test=new Bear(),亲,这,在一工程中,这实际么,可能,写着写着,自己都吐了,感受到接口的魅力了么, 61 感觉到面向对象爽之处了么,所以,要面向接口化编程! 62 其实,想想,第一种方式,如果有一天类名字改变了,要改的地也蛮多,这,这,工厂,你该出来了吧。。。 63 */ 64 #endregion 65 } 66 } 67 }
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Interface { /// <summary> /// 假设所有的动物类都有一个自我介绍的方法,为其定义一个共同的接口(introduction:介绍) /// </summary> public interface introduction { void speak(); } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Interface { /// <summary> /// Cat类继承introduction接口 /// </summary> public class Cat:introduction { #region introduction 成员 public void speak() { Console.WriteLine("我是机器猫,什么?不信,我给你变出好多吃的。。。"); } #endregion } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Interface { /// <summary> /// Bear类继承introduction接口 /// </summary> public class Bear:introduction { #region introduction 成员 public void speak() { Console.WriteLine("知道火焰是我最好的玩具的一定知道我吧,那只可爱的小熊熊就是我啦啦。。。"); } #endregion } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Interface { /// <summary> /// Monkey类实现introduction接口 /// </summary> public class Monkey:introduction { #region introduction 成员 public void speak() { Console.WriteLine("我是齐天大圣,记得吗,五百年前大闹天宫的就是俺老孙。。。"); } #endregion } }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。