gpt4 book ai didi

java - 面向对象设计 : Which is better practice?

转载 作者:行者123 更新时间:2023-11-29 10:17:03 24 4
gpt4 key购买 nike

我对我在 Java 文档和其他编程书籍中看到的对象创建的不同方式感到困惑。例如

假设有一个基类和一个派生类

1- 我有一个 Base 类型的变量,它引用 Derived 类型的对象

List<String> list = new ArrayList<String>();

2- 我有一个 Derived 类型的变量,它引用 Derived 类型的对象

ArrayList<String> arrList = new ArrayList<String>();

我的问题是在 1 和 2 之间做出选择时我应该怎么想?是不是为了在一般的Base-Derived场景中利用Polymorphism

在我不知道的 1 和 2 之间进行选择时,是否有更好的做法,或者这只是个人决定

编辑:

抱歉,List 是一个接口(interface)。另一个问题:如果我使用类型参数,我的决定会改变吗?

ArrayList<T> list = new ArrayList<T>();

更新答案:这实际上叫做“Programming to the interface”。感谢代码大师。这个问题的答案之一用非常简单的术语解释了我正在寻找的东西 - What does it mean to "program to an interface"?

最佳答案

  1. List 不是基类,它是一个接口(interface),因此应该尽可能使用。

    使用类实现的接口(interface)允许您使用实现该接口(interface)的所有类,而不仅仅是特定的类。

  2. String是一个具体的类,直接用会更清晰。

    然而,有时即使 String 实现了 CharSequence 接口(interface),也没有必要使用 CharSequence,因为它只会造成混淆。然而,看看 StringBuilder,它几乎完全使用 CharSequence

总而言之 - 没有更好只有合适

关于java - 面向对象设计 : Which is better practice?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14927452/

24 4 0
文章推荐: java - 如何将 Datepicker-date 转换为 Java.util.Date?
文章推荐: java - JButton 无法解析为类型
文章推荐: java - 为什么 List list = new ArrayList() 这会导致 TypeMismatch 错误