|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
前几天同学问我学习方向的问题。有点想法,不知道对不对,怕误导同学,现在“开源一下”。注:括号内是我现在整理的时填加上的。 第一节接口慨述
接口(interface)用来界说一种程序的协议。完成接口的类大概布局要与接口的界说严厉分歧。有了这个协议,就能够抛开编程言语的限定(实际上)。接口能够从多个基接口承继,而类或布局能够完成多个接口。接口能够包括办法、属性、事务和索引器。接口自己不供应它所界说的成员的完成。接口只指定完成该接口的类或接口必需供应的成员。
接口比如一种模版,这类模版界说了工具必需完成的办法,其目标就是让这些办法能够作为接话柄例被援用。接口不克不及被实例化。类能够完成多个接口而且经由过程这些完成的接口被索引。接口变量只能索引完成该接口的类的实例。例子:
interfaceIMyExample{
stringthis[intindex]{get;set;}
eventEventHandlerEven;
voidFind(intvalue);
stringPoint{get;set;}
}
publicdelegatevoidEventHandler(objectsender,Evente);
下面例子中的接口包括一个索引this、一个事务Even、一个办法Find和一个属性Point。
接口能够撑持多重承继。就像鄙人例中,接口"IComboBox"同时从"ITextBox"和"IListBox"承继。
interfaceIControl{
voidPaint();
}
interfaceITextBox:IControl{
voidSetText(stringtext);
}
interfaceIListBox:IControl{
voidSetItems(string[]items);
}
interfaceIComboBox:ITextBox,IListBox{}
类和布局能够多重实例化接口。就像鄙人例中,类"EditBox"承继了类"Control",同时从"IDataBound"和"IControl"承继。
interfaceIDataBound{
voidBind(Binderb);
}
publicclassEditBox:Control,IControl,IDataBound{
publicvoidPaint();
publicvoidBind(Binderb){...}
}
在下面的代码中,"Paint"办法从"IControl"接口而来;"Bind"办法从"IDataBound"接口而来,都以"public"的身份在"EditBox"类中完成。
申明:
1、C#中的接口是自力于类来界说的。这与C++模子是对峙的,在C++中接话柄际上就是笼统基类。
2、接口和类都能够承继多个接口。
3、而类能够承继一个基类,接口基本不克不及承继类。这类模子制止了C++的多承继成绩,C++中分歧基类中的完成大概呈现抵触。因而也不再必要诸如假造承继和显式感化域这类庞大机制。C#的简化接口模子有助于加速使用程序的开辟。
4、一个接口界说一个只要笼统成员的援用范例。C#中一个接话柄际所做的,仅仅只存在着办法标记,但基本就没有实行代码。这就表示了不克不及实例化一个接口,只能实例化一个派生自该接口的工具。
5、接口能够界说办法、属性和索引。以是,对照一个类,接口的特别性是:当界说一个类时,能够派生自多重接口,而你只能能够从唯一的一个类派生。
共2页:上一页1[2]下一页
简单的说:.net只有微软一家在做的,微软也不允许别人跟他做相同的工具,所以他就把需要的工具全部封装在.net的平台上了;而java是公开了。 |
|