为什么我们要为一个上层实例分配一个实例?这样做的原因是什么? 对于前者为什么我们在下面使用此代码?
List lst = new LinkedList();
似乎List是LinkedList的上层。为什么我们需要使用上层'实例而不是继承类',LinkedList's,instance。
另外,我还有另外一个问题。
我已经看到一些代码将一个类实例分配给它的接口。为什么我们需要下面的例子呢?我知道,因为我们无法生成接口的实例,所以它允许我们使用接口的实例。但是,使用接口实例有什么意义呢?
Apple a = new Apple();
IFruit b = (IFruit) a; (IFruit is the interface of Apple)
我希望,我已经清楚了。提前谢谢。
答案 0 :(得分:5)
编程接口(摘要)。
稍后,如果您想要LinkedList而不是ArrayList,您只需要更改一行代码:
List lst = new LinkedList();
答案 1 :(得分:2)
List lst = new LinkedList();
此处List
是一个界面,LinkedList
是它的实现。
这不是超类子类的情况。
List
声明其实现者被迫实现的某些方法。
它会给你encapsulation
的优势。
答案 2 :(得分:2)
使用接口(您称之为上层类)来抽象出代码中的一些细节。然后,您可以编写更多通用代码来处理类型为interface的数据。
使用水果示例,如果您有几种不同类型的水果,那么您可以编写一个接受IFruit的通用方法并传入任何类型的水果并知道它将被正确处理。如果你没有界面,那么你必须为你需要处理的每种水果都写一个方法。
答案 3 :(得分:1)
这是对接口的编程,允许您在不影响其余代码的情况下交换实现。这样你就可以关注Liskov Substitution Principle,这是五个SOLID原则中的一个(我目前为止最好的' OOP原则之一),我强烈建议您熟悉这些原则。