Java 使用接口类型实例化实现接口的类对象
将接口用作实例化类对象的类型会带来一些混淆。为什么我们需要接口作为一种类型?我们什么时候可以用这个类来代替?因为类实现了接口。我知道你不能实例化一个接口 非常感谢您的建议Java 使用接口类型实例化实现接口的类对象,java,Java,将接口用作实例化类对象的类型会带来一些混淆。为什么我们需要接口作为一种类型?我们什么时候可以用这个类来代替?因为类实现了接口。我知道你不能实例化一个接口 非常感谢您的建议 public interface SortRecords { int query(int rowId); } public class OurPrice implements SortRecords { @Override public int query
public interface SortRecords {
int query(int rowId);
}
public class OurPrice implements SortRecords {
@Override
public int query(int rowId) {
return 0;
}
}
public void test() {
/*
* Why has the interface as the type?
*/
SortRecords sorterV1 = new OurPrice();
sorterV1.query(1);
/*
* Why not just do like this?
*/
OurPrice sorterV2 = new OurPrice();
sorterV2.query(2);
}
接口声明了契约,并允许您自由指定提供相同契约的任何其他类。因此,引用接口的代码与您提供的实现无关
在上面的例子中,它不是特别有用。然而,在更广泛的上下文中,工厂可以为您提供它喜欢的任何实现(甚至在运行时变化)。作为消费者,你不必担心。您只需使用接口及其提供的契约(方法)进行通信。接口声明契约,并允许您自由指定提供相同契约的任何其他类。因此,引用接口的代码与您提供的实现无关
在上面的例子中,它不是特别有用。然而,在更广泛的上下文中,工厂可以为您提供它喜欢的任何实现(甚至在运行时变化)。作为消费者,你不必担心。您只需使用它提供的接口和契约(方法)进行通信。多态性基础
请阅读这里的多态性基础知识
阅读此处如果存在另一个
类
实现SortRecords
,例如:公共类他们的价格实现SortRecords{…}
?如果存在另一个类
实现SortRecords
,例如:公共类他们的价格实现SortRecords{…},该怎么办请考虑将链接源的相关部分添加到您的答案中,因为链接可能会死亡,对其他用户无效。请考虑将链接源的相关部分添加到您的答案中,因为链接可能会死亡,并且对其他用户变得无用。