由子未

向上人生路

导航

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 

posted on 2009-03-01 16:58  Rayleigh  阅读(330)  评论(0编辑  收藏  举报