C#接口的简单实例
C#中的接口和抽象类类似,继承接口的任何非抽象类型都必须实现接口的所有成员,也就是通过接口可以实现相同接口的引用来访问来实现相同接口的不同类的方法;其实是使用虚方法通过相同的的引用调用相同基础的不同类;我们可以在接口中添加一些元素;
注意:1、接口中不能包含字段,如变量,否则编译将会报错;
2、接口中的成员不能有定义,例如不能写方法体;
3、接口是类的实现规范,也就是说接口规定了方法的原型并有类实现接口所定义的原型,通过类继承接口来调用接口定义方法原型
4、调用接口的类必须实现接所调用接口里所定义的方法原型
5、类调用接口的方法原型必须有足够的访问权限(public)
6、接口可以实现接口调用相同的接口不同的类
7、一个类可以实现多个接口(类:接口1,接口2{})
8、接口一旦被实现,实现类必须实现接口中的所有成员,除非实现类本身是抽象类。
9、C#是单继承,接口是解决C#里面类可以同时继承多个基类的问题。
10、不能直接实例化接口
接口和抽象类的区别:
1、 接口用于规范,抽象化用于共性;抽象类是类智能被单继承,而接口可以实现多个继承。
2、 接口只能声明方法、属性、事件、索引器,而抽象类可以有方法的实现,也可以定义非静态类的变量
下面是通过实现接口方法的一个简单形象的实例,当人们面前站着两个人,分别是中国人和美国人,如果想和这两人交流,那么必须对中国人说汉语,对美国人说英语。因此在程序中可以创建一个接口,该接口定义一个方法用于对话,而对话这个方法是在类中实现的。分别创建一个中国人类和一个美国人类,这两个类都继承自接口,在中国人类中说汉语,在美国人类中说英语,当和不同人交流时,实例化接口,并调用类中的方法即可。代码如下;
(1) 首先先声明一个接口;
1
2
3
4
5
6
7
8
9/// <summary> /// 声明一个接口,用于定义Seak方法,而具体Speak方法功能的实现是在类中进行的 /// </summary> interface ISelectLanguage { //方法 void Speak(string str); }
(2)创建两个类来实现接口
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23/// <summary> /// 如果跟中国人对话,则说汉语 /// </summary> class C_SpeakChinese : ISelectLanguage { //实现接口方法(重写方法体) public void Speak(string str) { MessageBox.Show("您对中国友人说:" + str, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } } /// <summary> /// 如果跟美国人对话,则说英语 /// </summary> class C_SpeakEnglish : ISelectLanguage { //实现接口方法(重写方法体) public void Speak(string str) { MessageBox.Show("您对美国友人说:" +str, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } }
(3)定义方法触发接口的方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59public bool CheckChinese(string str) { bool flag = false; UnicodeEncoding a = new UnicodeEncoding(); byte[] b = a.GetBytes(str); for(int i=0;i<b.Length;i++) { i++; if (b[i] != 0) { flag = true; } else { flag = false; } } return flag; } //点击事件 private void button1_Click(object sender, EventArgs e) { if (txtContent.Text == "") { MessageBox.Show("不想跟友人说点什么吗?", "警告", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } else { //判断下拉框是选中值来执行相应的操作 if (comboBox1.SelectedIndex == 0)//与中国人对话 { if (CheckChinese(txtContent.Text)) { ISelectLanguage Interface1 = new C_SpeakChinese(); Interface1.Speak(txtContent.Text); } else { MessageBox.Show("请和中国友人说汉语?", "警告", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } else//与美国人对话 { if (CheckChinese(txtContent.Text)) { MessageBox.Show("请和美国友人说英语?", "警告", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } else { ISelectLanguage Interface1 = new C_SpeakEnglish(); Interface1.Speak(txtContent.Text); } } } }
窗体显示结果;
1、 C_SpeakChinese 实现的接口的方法,输入中文字符串的结果,英文反之
2、 C_SpeakEnglish 实现接口的方法,输入中文字符串;英文反之
最后
以上就是陶醉帅哥最近收集整理的关于C#接口的简单实例C#接口的简单实例的全部内容,更多相关C#接口内容请搜索靠谱客的其他文章。
发表评论 取消回复