直接调用接口的实例方法

Calling an Instance Method of an Interface Directly

我是 Java 的新手。几周前开始,依靠 oracle 文档和这个站点。渐渐地,我对 OOP 的主要概念有了很好的理解。

我很清楚,接口的实例方法成为实现class的实例方法,因此,可以通过实现class的对象调用,之后实例化。

接口 Set 有方法 iterator()。据我了解,我们需要先有一个实现 Set 接口的 class,然后实例化那个 class 的对象,以便能够调用该方法(通过对象)。

查看以下代码片段,我在网上阅读,我注意到 iterator() 方法是通过 (set) 调用的,它的类型仅为 (Set interface),(即 set 不是实例实现 Set 接口的任何 class)。

我的问题是:这可能吗?

另一方面,无论上述是否可行,根据 oracle 文档,方法 iterator() 被归类为 Set 接口的 "instance" 和 "abstract" 方法.那么,为什么要为 "set" 变量调用它,因为只有默认和静态接口方法有实现?

public static void main(String args[]) {

  HashMap<Integer, String> hmap = new HashMap<Integer, String>();

  hmap.put(12, "Chaitanya");
  hmap.put(2, "Rahul");

  /* Display content using Iterator*/
  Set set = hmap.entrySet();
  Iterator iterator = set.iterator();
  while(iterator.hasNext()) {
     Map.Entry mentry = (Map.Entry)iterator.next();
     System.out.print("key is: "+ mentry.getKey() + " & Value is: ");
     System.out.println(mentry.getValue());

阅读方法如下:

Set set = hmap.entrySet();
Iterator iterator = set.iterator();

hmap.entrySet returns 一个 对象 set 变量中 实现 Set 接口.这意味着 set 实现了 Set 接口中声明的所有方法。因此,针对 set 对象 调用 iterator() 方法完全没问题,因为它是 Set 接口的方法之一。

set 是一个 对象 ,它 实现了 Set 接口。它不是一个接口。这里唯一的接口是Set.

是的,这是可能的。

设置设置; 这里set只是一个参考变量。

如果我们有一个接口 say'interface1',则不允许以下内容:

interface1 object=new interface1();

但是如果Class1实现了interface1,那么

interface1 ref=new Class1() 和

Class1 ref=new Class1(),

以上'ref'都可以使用

另外,你必须知道,接口的所有方法都是public并且被default抽象并且所有抽象必须实施方法。

希望这能回答您的问题。