1 //定义了接口Iflay
2 interface Iflay
3 {
4 //定义了canflay的方法,所以能飞的都可以继承
5 //比如飞机、鸟、飞碟
6 void canflay();
7 }
8 //定义了接口ISay
9 interface ISay
10 {
11 //定义了cansay的方法,所以能说话的都可以继承
12 //比如电视、mp3、会说话的鹦鹉
13 void cansay();
14 }
15 //定义了一个动物的抽象类
16 abstract class Animal
17 {
18 //定义了一个吃东西的方法
19 abstract public void eat();
20 }
21 //定义了一个人类,继承了抽象动物类和接口isay,
22 abstract class Ren : Animal, ISay
23 {
24 //继承接口的子类必须完全实现接口中的成员
25 //实现了接口Isay中能说话的方法
26 public void cansay()
27 {
28 Console.WriteLine( "我继承了接口Isay,我能说话");
29 }
30 //再次定义一个保护的方法
31 abstract public void protect();
32 }
33 //定义一个动漫人物类,继承了抽象Ren类和接口Iflay
34 class DMren : Ren,Iflay
35 {
36 //定义类中的两个字段name、foot,提供给类中的方法
37 string name;
38 string foot;
39 //定义构造函数,其中有两个参数,第一个的名字DMname,第二个是同名的foot
40 //在构造函数中调用下面本类中的三个方法,和基类中的cansay方法。
41 //创建构造函数就是为了在其他类中,创建对象时,无需在其他类中使用DMren类的对象调用的麻烦,可以一次性使用构造方法中的所有方法成员,
42 //给字段赋值使用到了this关键字,因为是同名变量。
43 public DMren( string DMname, string foot)
44 {
45 this.foot = foot;
46 name = DMname;
47 canflay();
48 eat();
49 protect();
50 cansay();
51 }
52 public void canflay()
53 {
54 Console.WriteLine( "我继承了接口Iflay,我是{0},我能飞",name);
55 }
56 //使用override关键字重写抽象类中的abstract修饰的eat方法
57 public override void eat()
58 {
59 Console.WriteLine( "我是继承了抽象类animal,我吃" + foot);
60 }
61 //使用override关键字重写抽象类中的abstract修饰的Protect方法
62 public override void protect()
63 {
64 Console.WriteLine( "我是继承了抽象类Ren,我能保护周围的人" );
65 }
66 }
67 //定义了一个鸟类,继承了动物抽象类和接口Iflay
68 class bird : Animal, Iflay
69 {
70 string name;
71 string foot;
72 //如动漫DMren类一样使用构造方法,在创建对象的同时,一次性调用类中的所有要执行的方法和赋值
73 public bird( string DMname, string foot)
74 {
75 this.foot = foot;
76 name = DMname;
77 canflay();
78 eat();
79 }
80 public override void eat()
81 {
82 Console.WriteLine( "我是继承了抽象类animal,我吃" + foot);
83 }
84 public void canflay()
85 {
86 Console.WriteLine( "我继承了接口Iflay,我是{0},我能飞", name);
87 }
88 }
89 class Program
90 {
91 static void Main( string[] args)
92 {
93 //创建DMren对象dm,同时给构造函数传入两个参数
94 DMren dm = new DMren( "大力水手", "菠菜");
95 Console.WriteLine();
96
97 //创建bird对象b,同时给构造函数传入两个参数
98 bird b = new bird( "鸽子", "玉米");
99 }
100 }