关闭

接口的定义

494人阅读 评论(0) 收藏 举报

    
 
组件编程技术
 
组件
把庞大的应用程序分割成多个模块,每个模块完成独立的功能,模块之间协同工作,这样的模块叫组件.
 
接口
接口描述了组件对外提供的服务.在组件和组件,组件和客户之间都是通过接口进行交互,组件接口一旦发布,就尽量不要再修改接口,任何对接口修改的改变都有可能造成组件与客户的联系遭到破坏.
 
 
                            接口定义
 
从技术上讲,接口是一组包含了函数型方法的数据结构.通过这组数据结构,可以代码可以调用组件对象的功能.
 
接口的定义可以使用以下修饰符
New ,public,private,protected,internal
在接口定义时同一修饰符不能出现多次,new 修饰符只出现在嵌套接口中,表示覆盖了继承而来的成员名.
 
在接口的声明中可以定义接口的成员,接口成员可以是,方法,属性,索引指示器,事件.
     interface IControl
     {
         void Pain();
     }
声明了一个接口IControl,定义了一个成员方法Pain
 
接口的继承
 
接口具有不变性,但不意味着接口不再发展,类似于类的继承性,接口也可以继承和发展
值得注意的是,接口的继承和类的继承不一样.
1,类的继承不仅是说明继承,而且是实现继承,而接口继承只是说明继承,也就是说,派生类可以继承基类的方法实现,而派生类的接口只继承了父接口的成员方法说明,而没有继承父接口的实现
2,C#只允许类单继承,但接口允许多继承,一个子接口可以有多个父接口
 
被继承的接口必须是可以访问的到的,接口不允许直接或间接的从自身继承 
interface IControl
    {
        
void Pain();
    }
    
interface TextBox:IControl
    {
        
void SetText(string text);
    }
    
interface IComboBox:IControl,TextBox
    {}
 
接口IComboBox同时从IControl,TextBox中继承,多继承用逗号分割
 
接口成员
 
接口可以定义一个或多个成员,这些成员可以是方法,属性,索引指示器,事件,但不能是常量,域,操作符,构造函数,析构函数,而且不能包含任何静态成员
接口成员的默认访问方式是public,接口成员声明不能包含任何修饰符,接口可以声明与继承而来的成员名字相同的成员,这样就直接覆盖了继承的成员,如果在声明时不加NEW则编译器会报错
 
对接口成员的访问
 
接口成员访问与类的访问一致,但由于支持多继承,会发生出现两个同名的父继承成员,产生二义性,这是需要显示的进行声明.
 
 
interface ISequence
     {
         int Count
         {
              get;set;
         }
     }
     interface IRing
     {
         void Count(int i);
     }
     interface IRingSequence:ISequence,IRing{}
     class c
     {
         void test(IRingSequence rs)
         {   
              ((IRing)rs).Count(1);
              ((ISequence)rs).Count=1;
         }
     }
 
 
类C的方法test要访问接口IRingSequence的成员,必须先声明一个此接口的变量,然后显示指定具体继承的父属性的成员.
 
使用接口全名进行访问
直接用接口名.成员名进行访问,如果在命名空间内还需要包含命名空间名,例如
IControl.count;
Namespace.IControl.count
全名中的成员必须是在接口中声明过的,不能用继承而来的

 
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:245088次
    • 积分:3373
    • 等级:
    • 排名:第9949名
    • 原创:21篇
    • 转载:306篇
    • 译文:3篇
    • 评论:42条