在声明新对象时,何时应该使用接口与实现?

时间:2011-02-14 11:16:16

标签: java

我是Java新手。我想知道何时应该使用基类的引用以及何时应该创建一个新对象。我的意思是我们可以写

List list = new ArrayList();

以及何时

ArrayList list = new ArrayList();

如何确定使用什么???

4 个答案:

答案 0 :(得分:4)

使用

List list = new ArrayList();

始终学习使用界面编程。明天你可以有新的实现

答案 1 :(得分:4)

除了@Jigar,我的建议是使用这种方式进行类型安全

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

答案 2 :(得分:4)

可以同时使用两者,但前者是首选,因为使用对接口或超类型(List)的引用调用实现的方法总是更好。前者不依赖于实现,并且在实现(ArrayList)更改时无需更改代码,但后者要求您在实现更改为ArrayList以外的任何内容时更改代码。

答案 3 :(得分:2)

通常没关系。接口只定义了一组可以在对象上调用的方法:即对象implements接口。什么时候重要的是你可能有多个接口实现。假设您有一个方法可以对实现Vehicle接口的对象执行某些操作:

public static double getSpeed(Vehicle vehicle) {
    return vehicle.getSpeed();
}

您想要传递界面,因为您不关心对象是汽车还是面包车或其他任何东西,并且您希望此方法适用于此界面的所有实施 - 即所有类型的车辆。它们都实现了Vehicle接口,因此您知道可以调用getSpeed()方法。如果你这样做了:

public static double getSpeed(Car car) {
    return car.getSpeed();
}

那么你的方法不适用于货车或货车,即使它们都实现了车辆接口,因此它们都有.getSpeed()方法。