Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java接口和新类_Java_Class_Interface_Abstract - Fatal编程技术网

java接口和新类

java接口和新类,java,class,interface,abstract,Java,Class,Interface,Abstract,我一件简单的事都不懂。 示例:A是接口,B是正确实现A的类。 这到底意味着什么: A name = new B(some_argument); 我看到很多人用这个而不是 B name = new B(some_argument); 但我不明白这意味着什么,制作一个有界面的物体。 他们为什么这样做?他们之间有什么不同? 有时候一个比另一个好? 例如,相反的方法不起作用 B name = new A(); 从技术上讲,这两种方法都有效 大多数人使用第一种解决方案(您也应该这样做)的原因是接

我一件简单的事都不懂。 示例:A是接口,B是正确实现A的类。 这到底意味着什么:

A name = new B(some_argument); 
我看到很多人用这个而不是

B name = new B(some_argument); 
但我不明白这意味着什么,制作一个有界面的物体。 他们为什么这样做?他们之间有什么不同? 有时候一个比另一个好? 例如,相反的方法不起作用

B name = new A();

从技术上讲,这两种方法都有效

大多数人使用第一种解决方案(您也应该这样做)的原因是接口为一类定义了特定的契约/API。 这意味着当您不知道某个接口的实现或者该实现是可交换的时,就会使用该接口

因此,针对接口而不是实际的特定实现进行编码是使代码可交换和通用的最佳方法,这有助于模块化代码,尽可能降低类之间的硬链接依赖性,并使代码可维护

此外,接口还可用于向类添加其他功能,因为您可以实现多个接口,但只能扩展一个类

一个实际例子: 考虑一个插件的SDK。它定义了一些接口。 当实现该接口的类的函数是在开发应用程序/sdk两年后由另一个编写插件的人实现时,您希望如何调用该类的函数?;)