CLR via C# 学习笔记(2012/3/10)
来源:互联网 发布:mac管理员的名称和密码 编辑:程序博客网 时间:2024/04/28 12:31
第13章 接口
引入接口是为了解决多继承的问题。C#等托管语言,Java之类都是单继承的编程语言,为了实现多继承,就使用接口来实现。
接口的定义很简单,也就是定义几个方法签名,并且不需要添加访问性,C#会默认生成的。而继承接口的类需要将接口中的方法都实现才能编译成功,和继承基类相比,继承接口需要做得很多功夫。
当一个类继承的几个接口中,有方法签名是一样的,这时候可以使用显式实现接口的方法,例如:
interface IWindow { void GetMenu();}
interface IRestaurant { void GetMenu();}
public sealed class MarioPizzeria : IWindow, IRestaurant
{
void IWindow.GetMenu()
{
Console.WriteLine("IWindow");
}
void IRestaurant.GetMenu()
{
Console.WriteLine("IRestaurant");
}
public void GetMenu()
{
Console.WriteLine("MarioPizzeria");
}
}
这样当MarioPizzeria类的实例调用GetMenu()是其本身的公共方法,而将其转换成IWindow,调用的就是IWindow.GetMenu()方法了,转换成IRestaurant也一样。
一般不建议以显式来实现接口方法,这样会导致继承MarioPizzeria的派生类不能调用接口的方法,只能在方法里将其转换成对应的接口才能调用。
最后介绍了一些设计类时,选择基类还是接口的问题。这个一般是以类是is-a还是can-do的关系来决定,is-a就选择基类,can-do就选择接口。
- CLR via C# 学习笔记(2012/3/10)
- CLR via C# 学习笔记(2012/3/4)
- CLR via C# 学习笔记(2012/3/6)
- CLR via C# 学习笔记(2012/3/6)
- CLR via C# 学习笔记(2012/3/7)
- CLR via C# 学习笔记(2012/3/11)
- CLR via C# 学习笔记(2012/3/12)
- CLR via C# 学习笔记(2012/3/13)
- CLR via C#笔记
- clr via C#笔记(3)
- CLR via C# 阅读 笔记
- CLR via C#学习日记
- CLR Via C# 学习笔记(4) 方法 构造函数
- CLR Via C# 学习笔记(3) 常量和字段(const readonly)
- clr via C#笔记(4)
- clr via C#笔记(1)
- clr via C#笔记(2)
- clr via C#笔记(5)
- Mldonkey
- Python:一个多功能的抓图工具开发(附源码)
- java IO操作:转换流--OutputStreamWriter类与InputStreamReader类
- 闭包与柯里化
- Android调试工具adb的使用
- CLR via C# 学习笔记(2012/3/10)
- Struts2常用标签总结
- 正则表达式工作原理
- io流图解
- 让自增列复位
- win7 系统服务
- java IO操作:字节流与字符流区别
- Mac
- 再读西游,前序