我在 java 文档和其他编程书籍中看到的创建对象的不同方式感到困惑。例如
假设有一个base class
和一个derived class
1-我有一个类型的变量,Base
它指的是类型的对象Derived
List<String> list = new ArrayList<String>();
2-我有一个类型的变量,Derived
它指的是类型的对象Derived
ArrayList<String> arrList = new ArrayList<String>();
我的问题是在选择 1 和 2 时我应该怎么想?是否可以利用Polymorphism
一般的 Base-Derived 场景?
是否有一段better practice
时间在我不知道的 1 和 2 之间进行选择,或者只是一个personal decision
?
编辑:
对不起,List 是一个接口。 另一个问题:如果我使用 Type 参数,我的决定会改变吗?
ArrayList<T> list = new ArrayList<T>();
更新答案:这实际上称为"Programming to the interface"
. 感谢代码大师。在这个问题的答案之一中用非常简单的术语解释了我正在寻找的东西 - “编程到接口”是什么意思?