WEB开发网
开发学院软件开发C语言 隐式接口和显式接口 阅读

隐式接口和显式接口

 2010-09-30 21:08:57 来源:WEB开发网   
核心提示: classProgram{staticvoidMain(string[]args){Chinesec=newSpeaker();c.Speak();Speakers=newSpeaker();s.Speak();}}显式实现的客户端调用,注意类的声明,隐式接口和显式接口(2),只可以用接口声明,

class Program
{
    static void Main(string[] args)
    {
        Chinese c = new Speaker();
        c.Speak();
        Speaker s = new Speaker();
        s.Speak();
    }
}

显式实现的客户端调用,注意类的声明,只可以用接口声明,调用者才可以可以得到调用实例化对象的行为Speak;  

class Program
    {
        static void Main(string[] args)
        {
            English c = new Speaker();
            c.Speak();
            //下面写法将引起编译错误错误“PetShop.Speaker”不包含“Speak”的定义
           // Speaker s = new Speaker();
           // s.Speak();
        }
    }

隐示实现对象声明为接口和类都可以访问到其行为, 显示实现只有声明为接口可以访问。

选择隐式实现还是显示实现

隐式和显式接口实现的关键区别显然并不在于方法声明,而是在于从类外部的可访问性。以下是一些基本的设计原则,可以利用它们来帮助自己选择显式还是隐式实现。

1. 业务语义的考虑?

考虑接口Chinese和English对于成员的Speak的业务需求,Speaker要实现这两个接口,如果采用隐式实现,语法没有问题,业务满足了吗?

例如:

//服务端:
public class Speaker : English, Chinese
{
    public  string Speak()
    {
        return "English";
    }
}
//调用端:
class Program
{
    static void Main(string[] args)
    {
        Chinese c = new Speaker();
        c.Speak();
    }
}

Tags:接口 接口

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接