您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

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

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

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变量。

其他 2022/1/1 18:32:23 有707人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶