Head First C# 中文版 图文皆译 第七章 接口和抽象类 page276

来源:互联网 发布:周杰伦影响力知乎 编辑:程序博客网 时间:2024/05/22 06:06

问:为什么我要使用接口而不是把我需要的方法全部写到类里面?


答:随着你写的复杂的程序的增多,你将会写出很多类。接口帮你把会做同一件事儿的类组织起来。例如你可以让一个卡车类和一个帆船类实现ICarryPassenger接口。假设ICarryPassenger接口定义一个ConsumeEnergy()方法。这样,即使卡车使用柴油而帆船使用风能,你的程序也可以使用这两个类来承载乘客。假如没有ICarryPassenger接口。你就必须自己去一个个的检查,看看哪个类中定义的有搭载乘客的方法。而这些方法的名字有可能五花八门,不尽相同。也有可能它们根本就是嵌入在别的方法内部。你很快就会发现这样是很让人迷惑的。


问:为什们要使用属性呢?只用字段不可以吗?


答:问得好。接口只去定义类做事儿的方式。它本身不是对象,你无法实例化接口,它也就无法存储数据。要声明变量,C#就要有地方存储该变量--但是接口本身无法存储变量。


问:普通的对象引用和接口引用有什么区别?


答:通过对象引用可以访问类中的所有成员,而通过接口引用只可以访问接口定义的成员。


问:既然接口引用会限制对象可以做的事,那么我干嘛还要用它呢?


答:接口让你可以操作很多个不同类型但是可以做相同的事情的对象。虽然每一个实现类实现同名方法的方式或许有差异,但是你通过接口引用调用它们的方式--传递进去的参数、返回的值,都是一致的。

问:我为什么要把一些成员声明为protected,而不是public或者private呢?

答:这样可以帮你更好的封装。很多时候子类需要访问父类的私有成员。而public是要在有确切的需要的时候才使用的,所以使用protected可以把成员对于子类开放,对于其他人封闭。

接口引用只可以访问该接口中定义的方法、属性。