【问题标题】:java interfaces and new class [duplicate]java接口和新类[重复]
【发布时间】:2016-04-15 09:56:19
【问题描述】:
我无法理解一件简单的事情。
例子:A是一个接口,B是一个正确实现A的类。
到底是什么剂量的意思:
A name = new B(some_argument);
我看到很多人用这个代替
B name = new B(some_argument);
但我不知道这意味着用接口制作一个对象是什么意思。
他们为什么这样做?它们之间有一些区别吗?
有时一个比另一个更好?
例如相反的剂量不起作用
B name = new A();
【问题讨论】:
标签:
java
class
interface
abstract
【解决方案1】:
技术上两者都有效。
大多数人使用第一个解决方案(您也应该这样做)的原因是接口为一类类定义了特定的协定/API。
这意味着当您不知道接口的实现或实现是可交换的时,将使用接口。
因此,针对接口而不是针对真正的特定实现进行编码是使代码可交换和通用的最佳方式,这有助于您模块化代码,尽可能降低类之间的硬链接依赖性并使您的代码可维护。
也可以使用接口为类添加附加功能,因为您可以实现多个接口但只能扩展一个类。
一个实际的例子:
考虑一个用于插件的 SDK。它定义了一些接口。
当您开发应用程序/sdk 两年后,另一个编写插件的人完成了该接口的实现时,您想如何调用实现该接口的类的函数? ;)