interface接口
1 using System;
2 using System.Collections.Generic;
3 using System.Text;
4
5
6 namespace interfacE
7 {
8 //接口的多继承-----------------------
9 interface IA//声明接口用interface
10 {
11 void f();
12 }
13 interface IB : IA//接口继承
14 {
15 new void f();
16 }
17 interface IC : IA
18 {
19 void g();//接口可以实现0个基类接口的方法(接口与接口).实现接口的类,必须实现其接口(包括基该接口的基接口)的全部方法(接口和类).
20 }
21 interface IbC : IB,IC
22 {
23 }
24 class drivE:IbC//接口的实现
25 {
26 public void f()
27 {
28 Console.WriteLine("IB.f");
29 }
30 public void g()
31 {
32 Console.WriteLine("IC.g");
33 }
34 }
35 class driveA : IC
36 {
37 public void f()
38 {
39 Console.WriteLine("driveA");
40 }
41 public void g()
42 {
43 }
44 }
45 class program
46 {
47 static void Main()
48 {
49 drivE dA = new drivE();
50 ((IbC)dA).f();
51 ((IC)dA).f();
52 ((IB)dA).f();
53 ((IA)dA).f();
54
55 driveA dB = new driveA();
56 ((IA)dB).f();
57 }
58 }
59
60
61 //完全接口限定名的使用------------------
62 //interface IB//驾照B
63 //{
64 // void jiazaoA();
65 //}
66 //interface IA : IB//驾照A
67 //{
68 // new void jiazaoA();//IA和基接口IB的方法名一样,通不过编译器,用new实例化解决这一问题
69 //}
70 //class xueshenG : IB
71 //{
72 // void IB.jiazaoA()//完全接口限定名,声明不能用修饰符
73 // {
74 // Console.WriteLine("考到了B照");
75 // }
76 //}
77 //class laoshI : IA
78 //{
79 // void IA.jiazaoA()
80 // {
81 // Console.WriteLine("考到了A照");
82 // }
83 // void IB.jiazaoA()
84 // {
85 // Console.WriteLine("考到了B照");
86 // }
87 //}
88 //class program
89 //{
90 // static void Main()
91 // {
92 // laoshI onB = new laoshI();//laoshI类实现了IA的接口,IA的接口继承于IB的接口,所以同时实现了两个接口
93 // ((IA)onB).jiazaoA();//用强制转换的方式显式的访问接口的方法
94 // ((IB)onB).jiazaoA();
95 // }
96 //}
97
98
99
100 //interface IB//驾照B
101 //{
102 // void jiazaoA();
103 //}
104 //interface IA:IB//驾照A
105 //{
106 // new void jiazaoA();//IA和基接口IB的方法名一样,通不过编译器,用new实例化解决这一问题
107 //}
108 //class xueshenG : IB
109 //{
110 // public void jiazaoA()
111 // {
112 // Console.WriteLine("考到了B照");
113 // }
114 //}
115 //class laoshI : IA
116 //{
117 // public void jiazaoA()
118 // {
119 // Console.WriteLine("考到了A照");
120 // }
121 //}
122 //class program
123 //{
124 // static void jieguo(string name, IB ibA)//审核学生的B照
125 // {
126 // IB onA = ibA as IB;
127 // if (onA != null)
128 // {
129 // Console.WriteLine(name + "通过审核,可以开卡车了");
130 // }
131 // else
132 // {
133 // Console.WriteLine(name + "没有B照,不能开卡车");
134 // }
135 // }
136 // static void jieguoA(string name, IA iaA)//审核老师的A照
137 // {
138 // IA onB = iaA as IA;
139 // if (onB != null)
140 // {
141 // Console.WriteLine(name + "通过审核,可以开客车了");
142 // }
143 // else
144 // {
145 // Console.WriteLine(name + "没有A照,不能开客车");
146 // }
147 // }
148 // static void Main()
149 // {
150 // laoshI laoshiA = new laoshI();
151 // jieguoA("老师", laoshiA);
152 // xueshenG sueshengA = new xueshenG();
153 // jieguo("学生", sueshengA);
154 // }
155 //}
156
157 //interface IjiekO//声明接口时的命名第一个字母规定为大写的I
158 //{
159 // void huodE();
160 //}
161 //class jiazaO:IjiekO
162 //{
163 // public void huodE()//命名要和接口里的方法名相同
164 // {
165 // Console.WriteLine("通过审核,获得驾照");
166 // }
167 //}
168 //class program
169 //{
170 // static void duqiI(string yournamE, object duqiO)
171 // {
172 // IjiekO iA = duqiO as IjiekO;//as用于在兼容的引用类型之间执行转换,类似于强制转换,所不同的是,当转换失败时,运算符将产生null值,而不是引发异常
173 // if (iA != null)
174 // {
175 // Console.WriteLine(yournamE + "已经可以开车了");
176 // }
177 // else
178 // {
179 // Console.WriteLine(yournamE + "没有驾照,还不能开车");
180 // }
181 // }
182 // static void Main()
183 // {
184 // jiazaO jA = new jiazaO();
185 // duqiI("老师", jA);//jA是类的实例.方法duqiI是一个方法,有两个参数,后一个参数是一个对象成员,对象是所有类和成员的基类成员,所以duaiI可以传递类实例.
186 // //这里调用静态方法duqiI
187 // }
188 //}
189 }
190
191
192
2 using System.Collections.Generic;
3 using System.Text;
4
5
6 namespace interfacE
7 {
8 //接口的多继承-----------------------
9 interface IA//声明接口用interface
10 {
11 void f();
12 }
13 interface IB : IA//接口继承
14 {
15 new void f();
16 }
17 interface IC : IA
18 {
19 void g();//接口可以实现0个基类接口的方法(接口与接口).实现接口的类,必须实现其接口(包括基该接口的基接口)的全部方法(接口和类).
20 }
21 interface IbC : IB,IC
22 {
23 }
24 class drivE:IbC//接口的实现
25 {
26 public void f()
27 {
28 Console.WriteLine("IB.f");
29 }
30 public void g()
31 {
32 Console.WriteLine("IC.g");
33 }
34 }
35 class driveA : IC
36 {
37 public void f()
38 {
39 Console.WriteLine("driveA");
40 }
41 public void g()
42 {
43 }
44 }
45 class program
46 {
47 static void Main()
48 {
49 drivE dA = new drivE();
50 ((IbC)dA).f();
51 ((IC)dA).f();
52 ((IB)dA).f();
53 ((IA)dA).f();
54
55 driveA dB = new driveA();
56 ((IA)dB).f();
57 }
58 }
59
60
61 //完全接口限定名的使用------------------
62 //interface IB//驾照B
63 //{
64 // void jiazaoA();
65 //}
66 //interface IA : IB//驾照A
67 //{
68 // new void jiazaoA();//IA和基接口IB的方法名一样,通不过编译器,用new实例化解决这一问题
69 //}
70 //class xueshenG : IB
71 //{
72 // void IB.jiazaoA()//完全接口限定名,声明不能用修饰符
73 // {
74 // Console.WriteLine("考到了B照");
75 // }
76 //}
77 //class laoshI : IA
78 //{
79 // void IA.jiazaoA()
80 // {
81 // Console.WriteLine("考到了A照");
82 // }
83 // void IB.jiazaoA()
84 // {
85 // Console.WriteLine("考到了B照");
86 // }
87 //}
88 //class program
89 //{
90 // static void Main()
91 // {
92 // laoshI onB = new laoshI();//laoshI类实现了IA的接口,IA的接口继承于IB的接口,所以同时实现了两个接口
93 // ((IA)onB).jiazaoA();//用强制转换的方式显式的访问接口的方法
94 // ((IB)onB).jiazaoA();
95 // }
96 //}
97
98
99
100 //interface IB//驾照B
101 //{
102 // void jiazaoA();
103 //}
104 //interface IA:IB//驾照A
105 //{
106 // new void jiazaoA();//IA和基接口IB的方法名一样,通不过编译器,用new实例化解决这一问题
107 //}
108 //class xueshenG : IB
109 //{
110 // public void jiazaoA()
111 // {
112 // Console.WriteLine("考到了B照");
113 // }
114 //}
115 //class laoshI : IA
116 //{
117 // public void jiazaoA()
118 // {
119 // Console.WriteLine("考到了A照");
120 // }
121 //}
122 //class program
123 //{
124 // static void jieguo(string name, IB ibA)//审核学生的B照
125 // {
126 // IB onA = ibA as IB;
127 // if (onA != null)
128 // {
129 // Console.WriteLine(name + "通过审核,可以开卡车了");
130 // }
131 // else
132 // {
133 // Console.WriteLine(name + "没有B照,不能开卡车");
134 // }
135 // }
136 // static void jieguoA(string name, IA iaA)//审核老师的A照
137 // {
138 // IA onB = iaA as IA;
139 // if (onB != null)
140 // {
141 // Console.WriteLine(name + "通过审核,可以开客车了");
142 // }
143 // else
144 // {
145 // Console.WriteLine(name + "没有A照,不能开客车");
146 // }
147 // }
148 // static void Main()
149 // {
150 // laoshI laoshiA = new laoshI();
151 // jieguoA("老师", laoshiA);
152 // xueshenG sueshengA = new xueshenG();
153 // jieguo("学生", sueshengA);
154 // }
155 //}
156
157 //interface IjiekO//声明接口时的命名第一个字母规定为大写的I
158 //{
159 // void huodE();
160 //}
161 //class jiazaO:IjiekO
162 //{
163 // public void huodE()//命名要和接口里的方法名相同
164 // {
165 // Console.WriteLine("通过审核,获得驾照");
166 // }
167 //}
168 //class program
169 //{
170 // static void duqiI(string yournamE, object duqiO)
171 // {
172 // IjiekO iA = duqiO as IjiekO;//as用于在兼容的引用类型之间执行转换,类似于强制转换,所不同的是,当转换失败时,运算符将产生null值,而不是引发异常
173 // if (iA != null)
174 // {
175 // Console.WriteLine(yournamE + "已经可以开车了");
176 // }
177 // else
178 // {
179 // Console.WriteLine(yournamE + "没有驾照,还不能开车");
180 // }
181 // }
182 // static void Main()
183 // {
184 // jiazaO jA = new jiazaO();
185 // duqiI("老师", jA);//jA是类的实例.方法duqiI是一个方法,有两个参数,后一个参数是一个对象成员,对象是所有类和成员的基类成员,所以duaiI可以传递类实例.
186 // //这里调用静态方法duqiI
187 // }
188 //}
189 }
190
191
192