【发布时间】:2017-11-24 03:46:40
【问题描述】:
我有点难以理解编程接口和同时使用抽象类的概念。
我有一组“检索器”类,用于从 Internet 检索不同类型的数据。这些检索器类检索 JSON 响应字符串
public class AccountRetriever extends DataRetriever implements AccountInformation{
List<String> getAccountInformation{
....
}
}
public class BalanceRetriever extends DataRetriever implements BalanceInformation{
List<String> getBalanceInformation{
....
}
}
AccountInformation 和 BalanceInformation 都是其中显示的方法的接口。我还从一个抽象类“DataRetriever”扩展而来,它有一个名为
的方法public String getResponseAsString();
在我的主要使用接口中实例化这些类之后:
AccountInformation ai = new AccountRetriever(apiRequest);
List<String> aiList = ai.getAccountInformation(); <----this works
ai.getResponseAsString(); <----this doesn't work. Why??
BalanceInformation bi = new BalanceRetriever(apiRequest);
List<String> biList = bi.getBalanceInformation(); <----this works
bi.getResponseAsString(); <----this doesn't work. Why??
getResponseAsString() 方法存在于每个检索器扩展的抽象类中,为什么我无法访问该方法?我可以访问的唯一方法是界面中的方法。我在这里做错了什么?
【问题讨论】:
-
并非所有
AccountInformation实例都是DataRetriever的实例。
标签: java class interface abstract