为什么在实例化子类型之前先声明子类型为它们的超类型?

为什么在实例化子类型之前先声明子类型为它们的超类型?,第1张

为什么在实例化子类型之前先声明子类型为它们的超类型?

快速回答?使用接口和超类可以提高代码的可移植性和可维护性,主要是通过隐藏实现细节。采取以下假设示例:

class Account {    private Collection<Transaction> transactions;    public Account() {        super();        transactions = new ArrayList<Transaction>(4);    }    public Collection<Transaction> getTransactions() {        return transactions;    }}

我已经声明了一个帐户合同,该合同规定可以将已发布到该帐户的交易作为集合进行检索。我的代码的调用者不必关心我的方法实际上返回的集合类型,也不应该这样做。这样,如果需要,我可以自由地更改内部实现,而不会影响(也称为破坏)未知数量的客户端。因此,如果我发现我需要在事务上施加某种独特性,则可以将上面显示的
实现 从ArrayList更改为HashSet,而对使用我的类的任何人都没有负面影响。

public Account() {    super();    transactions = new HashSet<Transaction>(4);}

关于您的第二个问题,我可以说您在任何有意义的地方都使用了可移植性和封装性原则。那里没有很多CharSequence实现,而String是迄今为止最常用的实现。因此,您不会看到很多开发人员在其代码中声明CharSequence变量。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5562240.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存