以后可以轻松更改界面的实现

Lia*_*ang 0 java oop interface

因此在java中,初始化接口(如集合或列表)的方法是创建实现它的类的实例,例如:

Collection<Object> moo = new ArrayList();
Run Code Online (Sandbox Code Playgroud)

如果我想在稍后的代码中指定一个实现,我想通过创建另一个类来实现这一点:

class ListList extends ArrayList{

}
Run Code Online (Sandbox Code Playgroud)

然后使用.初始化变量

Collection<Object> moo = new ListList();
Run Code Online (Sandbox Code Playgroud)

然后,如果我想稍后更改实现,那么所需要的就是更改ListList扩展的内容.

所以,这里有一个问题......是否有更好的方法(我还是觉得我对这类事情缺乏经验).

ska*_*man 6

有没有更好的方法来做到这一点

是的:使用工厂方法:

public static Collection<Object> createCollection() {
    return new ArrayList<Object>(); // change this later, if need be
}
Run Code Online (Sandbox Code Playgroud)

然后,调用工厂而不是实例化:

Collection<Object> moo = createCollection();
Run Code Online (Sandbox Code Playgroud)

你使用"虚拟"子类的建议可能看起来很有吸引力,但这种继承的滥用总会导致后来的痛苦和痛苦.你真的不想那样做.