现在的位置: 首页 > 综合 > 正文

接口实现的一些细节

2012年03月12日 ⁄ 综合 ⁄ 共 1216字 ⁄ 字号 评论关闭

有时候,代码要胜过大篇幅的文字描述.

    public interface ITest1
    {
        
void Method(); 
    }
    
public interface ITest2
    {
        
void Method();
    }

    /// <summary>
    
/// ITest1,ITest2共享Method的实现
    
/// </summary>
    public class MyInterfaceTest1:ITest1,ITest2
    {

        public void Method()
        {
            Console.WriteLine(
"MyInterfaceTest1.Method");
        }
    }

    /// <summary>
    
/// ITest1,ITest2单独调用其各自的实现,且不会调用public void Method(),
    
/// class MyInterfaceTest2类型的引用无法访问其接口方法
    
/// </summary>
    public class MyInterfaceTest2:ITest1,ITest2
    {

        public void Method()
        {
            Console.WriteLine(
"MyInterfaceTest2.Method");
            
        }

        void ITest1.Method()
        {
            
this.Method();// return "MyInterfaceTest2.Method",这个地方很好玩,本以为是调用ITest1.Method()
            Console.WriteLine("ITest1.Method");
        }

        void ITest2.Method()
        {
            Console.WriteLine(
"ITest2.Method");
        }

    }

}

 

简单说明一下,

当一个类实现具有相同方法的两个接口时

方法中没有指定接口名,则共享同一实现,否则,接口调用他的显示实现.

而类实例是无法调用其接口的显示实现的 例如

上文中,如果注释掉

        public void Method()
        {
            Console.WriteLine(
"MyInterfaceTest2.Method");
            
        }

MyInterfaceTest2 myt2=new  MyInterfaceTest2();

myt2. Method();//错误

 

抱歉!评论已关闭.