你能用Java实例化一个接口吗?

drl*_*obo 6 java interface

你能用Java实例化一个接口吗?

我知道快速回答是"不".但是有一点我不太了解.

这里发生了什么:

SharedPreferences是一个公共接口:

http://developer.android.com/reference/android/content/SharedPreferences.html

但是我们没有使用这个界面,正如我在书中所读到的那样,我们不创建类并实现SharedPreferences.\

相反,我们使用这样的API:

 SharedPreferences pref = Context.getSharedPreferences("some value", 0);

http://developer.android.com/reference/android/content/Context.html#getSharedPreferences(java.lang.String,%20int)
Run Code Online (Sandbox Code Playgroud)

那么这段代码到底发生了什么?


我认为它像getSharedPreferences()正在创建一个我们可以使用和操作的SharedPreferences对象.

但SharedPreferences是一个接口......我被告知你必须实现接口而不是创建它们的对象.

这是什么在Java?

非常感谢所有指针

(我还在努力学习)

跟进问题.

当我查看Java API时,我看到一个定义为Public Interface的类.我如何知道何时实现该接口或何时从中创建此类对象?

Twi*_*sen 7

你永远不能在java中实例化一个接口.但是,您可以通过接口类型引用实现接口的对象.

所以发生的事情是getSharedPreferences返回一个实现该接口的对象.返回对象的类型并不重要.重要的是它实现了该接口的所有方法,因此它可以用作SharedPreferences


aym*_*koo 3

 SharedPreferences pref = Context.getSharedPreferences("some value", 0);
Run Code Online (Sandbox Code Playgroud)

在此代码中,对象的类型是 SharedPreferences,但实例是实现 SharedPreferences 接口的类,这是 OOP 的基本概念