学习
解决方案 »
- 急!急!GridView是代码分页的,要全部导出EXCEL,而不是gridview第一页
- 团队做项目该怎样分工?
- C#中怎样求标准差?
- .net打包问题
- 字符串中隐藏的特殊字符
- 请问一个新手问题
- 关于数据转换的问题.......
- 关于div+css样式的一个问题
- 怎样获取存储过程中返回的若干表?
- 在.cs文件中调用javascript,在传递参数时有误,请问怎样获取到此参数据?
- string 和 stringbuilder有什么区别,各自在什么情况下使用
- C#多文档问题: 用C#实现一个像腾讯TT,VS.net等这样的多文档是如何做的呀?是不是用TabControl添加几个TabPage?问题是在程序里动态添加
interface 飞机
{
void 起飞();
void 降落();
}class 客机 : 飞机
{
public void 起飞()
{ } public void 降落()
{ }
}
class 战斗机 : 飞机
{
public void 起飞()
{ } public void 降落()
{ }
}这样你声明的时候就可以
飞机 一架飞机 = new 战斗机();
一架飞机.起飞();
一架飞机.降落();一架飞机 = new 客机();
一架飞机.起飞();
一架飞机.降落();明白了吗?
就是说一个接口定义好了,只要是继承这个接口的类的实例,都能执行接口定义的方法
就象USB接口一样,如果大家都用电脑那种USB接口,则不管是哪个产家生产的U盘都能接进去,电脑就能正确识别。如果不遵循的话,后果自然可知。飞机驾驶员只要学会起飞,降落。驾驶员只用操作相同的面板就行了。而不用管不同的产家的飞机,在机械方面的不同之处。你也不用管它是加油,还是用核燃料。这样带来的好处就是灵活
{}public class c1:test
{
}public class c2:test
{
}假如有函数需要调用这个接口:
public viod h(test I)
{
}那么你在下面调用的这个函数的时候:
h(c1)
h(c2)都可以,当然c1和c2必须实现了接口test.假如没有这样,那必须把函数h改为:
public void h(c1 c)
{
}
那才能调用h(c1),但这是就不能在调用h(c2)了,必须在写一下h的原类才能调用。在工厂模式的时候这种情况用的特别多。
不知道我说的你理解了没有?
http://www.uml.org.cn/mxdx/200410296.htm
借用lh8287(iWorm)的例子,起飞和降落是一组动作,飞机有这样的动作,小鸟也有这样的动作,但飞机和小鸟没有任何关系(如果你说它们都是事物,那我没办法),所以起飞和降落定义在一个接口里面,飞机和小鸟可以实现这组操作。任何有起飞和降落这样动作的类都可以实现这样的接口。
却有着同一种方法,应用程序在调用这种方法时,无法以类的
多态性来灵活实现,怎么办呢?通过接口吧,举个例子:
public interface 凸
{
void 插入();
}public class 男人 : 凸
{
void 插入(){//想插入什么,怎么插入你自己写吧;}
}public class 插头 : 凸
{
void 插入(){//想插入什么,怎么插入你自己写吧,一般是插入插座吧;}
}以上定义了两个类:男人和插头,它们都支持一个插入()的方法,但是它们
却找不到一个同共的基类(当然,你可以使它们派生于Object类,但却显得
有点牵强),为了在程序中能使用多态带来的灵活,可以把插入()这个行为
抽到一个叫“凸”的接口中,此后,所有带有插入()行为的东东,都支持
“凸”这个接口就行了,程序中通过“凸”的一个引用,就可以实现不同东
东的插入()行为了。说得有点色情(或是低俗),请大家原谅。
bbdog(贝贝狗)說的精彩有意思