我有对象Res1和Res2。
public class Res1 {
public String foo1;
public String foo2;
}
public class Res2 {
public String foo3;
public String foo4
}
我还有一个对象Response
public class Response {
public ResMsg res;
public String code;
public String error;
}
Res1
和Res2
必须属于ResMsg
类型。
我应该创建一个空的抽象类
public abstract class ResMsg {
}
并让Res1
和Res2
扩展此类,或
我应该创建一个空接口然后再
让他们实现这个接口。
拥有一个空接口或一个抽象类看起来很奇怪。 这样做的最佳方式是什么?
修改
我正在开发一种将数据从一个Web服务传递到另一个Web服务的Web服务。为了更好地解决端到端问题,我想创建一个公共Response
来封装响应,例如Res1
和Res2
(我从后端获得的原始回复),并添加字段code
和error
。
答案 0 :(得分:1)
只有当您希望该类具有将由扩展它的类重用的方法时,才必须创建一个抽象类。如果你只是想说一个类属于某种类型,我认为使用接口更合适。这就是我们所说的“标签界面”http://c2.com/cgi/wiki?TagInterface
答案 1 :(得分:0)
在你的问题中,Res1和Res2需要是ResMsg类型,这表明Res1,Res2应该有一些共同点。
但是从Res1,Res2的类定义中,它们只有不同的字段,没有任何共同之处。
是否使用接口取决于您希望如何使用Response对象。
在我看来,会有一个ResMsg接口,它定义了公共api,Res1和Res2可以直接实现接口。如果Res1和Res2有一些常见的逻辑,你可以有一个抽象类,比如AbstractResMsg,来实现常见的逻辑。 Res1,Res2可以扩展抽象类并实现接口。