|
接口的再次总结 |
这里我用了好几个关于接口的特殊例子,虽然有的可能真的特殊,不过也不例外,有时会碰到,有了这些可能(我觉得)将有很大帮助的.
using System;interface Itest{ void f();}abstract class A:Itest{ public void f() { Console.WriteLine("This is parent:"); }}class B:A{ public new void f() { Console.WriteLine("This is child:"); }}class test{ static void Main() { A a=new B(); a.f(); Console.ReadKey(); }}此处抽象类也被实例化了,其实如果是一个接口都一样可以,被这样实例化.////////////////////////////////////using System;interface Itest{ void f();} class A:Itest{ void Itest.f() { Console.WriteLine("This is parent:"); }}class B:A{ public void f() { Console.WriteLine("This is child:"); }}class test{ static void Main() { A a=new B(); a.f(); Console.ReadKey(); }}//////////f()A中是不可见的,所以A a=new B();
a.f();这样是编译会报错///////////////////////////////////////
using System;interface Itest{ void f();} class A:Itest{ void Itest.f() { Console.WriteLine("This is parent:"); } public void f() { Console.WriteLine("和平共处五项原则"); }}class B:A{ public new void f() { Console.WriteLine("This is child:"); }}class test{ static void Main() { B a=new B(); ((Itest)a).f(); Console.ReadKey(); }}//////////This is parent.证明调用的是A中显示实现的接口成员,这证明了显示实现接口方法一样可以被继承.但其和能过一般的方法实现不相同 ///也就是说可以同时声明接口方法// (1)显示实现(2)当成类的一般成员定义(3)通过接口强制类转换,有且只能调用显示接口实现的方法using System;interface Itest{ void f();} class A:Itest{ void Itest.f() { Console.WriteLine("This is parent:"); } public void f() { Console.WriteLine("和平共处五项原则"); }}class B:A,Itest{ public new void f() { Console.WriteLine("This is child:"); }}class test{ static void Main() { B a=new B(); ((Itest)a).f(); Console.ReadKey(); A b=new A(); ((Itest)a).f(); Console.ReadKey(); }}//////////两者都是输出:This is chid: 证明:如果显示实现接口的方法,被再次重新定义(另一个由该接口派生的类中是一般的方法重写),原显示实现的方法被重写(应去掉),如果在用强制接口调用 /// //方法,将会得到现在的方法.总结:如果显示实现的接口方法,没有被再次定义(这里我验证过不管是在另一个由该接口派生的类中是一般的方法重写,或者也是显示方法实现都会使原方法无效),则在其所在的类族中是不可见的.它只能用强制接口方法进行调用. 500)this.width=500'>
500)this.width=500'> | |
|
回复:接口的再次总结 |
开花的芝麻发表评论于2008/3/20 14:52:25 |
|
|
» 1 »
|
|
|