【发布时间】:2016-01-27 20:58:15
【问题描述】:
整天阅读接口和抽象类,试图掌握它们,以更好地理解我正在使用的亚马逊库。我有这个代码:
using MWSClientCsRuntime;
namespace MarketplaceWebServiceOrders.Model
{
public interface IMWSResponse : IMwsObject
{
ResponseHeaderMetadata ResponseHeaderMetadata { get; set; }
}
和
namespace MWSClientCsRuntime
{
public interface IMwsObject
{
void ReadFragmentFrom(IMwsReader r);
string ToXML();
string ToXMLFragment();
void WriteFragmentTo(IMwsWriter w);
void WriteTo(IMwsWriter w);
}
}
我的第一个问题是我认为接口不能包含字段,但是它们可以包含属性 usch 如ResponseHeaderMetadata?
其次,在我的主程序中,我有这行代码:
IMWSResponse response = null;
response 稍后用于存储亚马逊在调用方法调用后发回的信息。 但是将接口类型的变量设置为 null 的含义是什么?
另外,一个接口可以实现另一个接口吗?不仅类可以实现接口,接口本身也可以实现?
【问题讨论】:
-
什么意思 把变量设为null是什么意思?它与设置为 null 的任何其他变量没有任何不同;这意味着它实际上并不指向任何东西。你有什么不明白的?
-
将变量类型设置为接口有什么意义?我了解将变量设置为字符串、int 或其他数据类型,但何时需要将变量设置为接口类型。
-
听起来你需要花一些时间阅读一本介绍性的编程书籍,或者类似的东西。这远远超出了 SO 问题的范围。
-
抽象!!!因为系统应该依赖于声明而不是实现。这就是设计松散耦合系统的方式。这是一个post,用于了解接口与抽象类的基础知识。
-
啊,好吧,我也想我也有一个小灯泡的时刻。从亚马逊获取信息的方法有一个返回类型叫做
ListOrdersResponse,这个类实现了IMWSResponse,所以这就是变量response可以用来存储亚马逊方法调用返回的信息的原因。
标签: c# oop interface encapsulation