龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > asp.net编程 >

C#实现隐式接口和显式接口讲解(2)

时间:2009-12-21 11:47来源:未知 作者:admin 点击:
分享到:
这个时候就考虑使用一个显式的实现 显式实现 //服务端: public class Speaker:English,Chinese { string English.Speak() { return "English"; } string Chinese.Speak() { return "中文

这个时候就考虑使用一个显式的实现

显式实现
 //服务端:
 public class Speaker:English,Chinese
    {
        string English.Speak()
        {
            return "English";
        }
        string Chinese.Speak()
        {
            return "中文";
        }
}

//调用端:
   class Program
    {
       string English.Speak()
        {
            return "English";
        }

        string Chinese.Speak()
        {
            return "中文";
        }
}

2. 实现类是否准备让调用者独立使用?
虽然显示接口实现提供了更好的封装性,对调用者使用可以强制其进行接口声明,但是如果你准备让用户可以单独使用你这个类的功能,请提供隐式实现。
C#中的接口VS Java中的接口
Java中并没有在语言层面提供隐式和显式接口的实现,那么对于我们例子的中场景如何解决?当然有办法,只是没有C#优雅,还是Java故意在语言层面不提供这样的解决方案,难道认为他破坏了类的单一职责原则?我也在想这个问题,是不是一个Speaker只实现Chinese或者English之一那才是比较好的设计?
C#中接口总结
接口描述的是可属于任何类或结构的一组相关功能。接口可由方法、属性、事件、索引器或这四种成员类型的任意组合构成。接口不能包含字段。接口成员一定是公共的,而且是默认的,不要画蛇添足。
当类或结构继承接口时,意味着该类或结构为该接口定义的所有成员提供实现。接口本身不提供类或结构能够以继承基类功能的方式继承的任何功能。但是,如果基类实现接口,派生类将继承该实现。
如果一个类机继承类并实现接口,一定要吧类写在符号:后面的第一个位置。


精彩图集

赞助商链接