直接调用接口的实例方法

时间:2016-10-01 05:29:26

标签: java oop interface instance

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

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

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

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

我的问题是:这可能吗?

另一方面,无论上述是否可行,根据oracle文档,方法iterator()被归类为"实例"和"摘要" Set接口的方法。那么,它是如何被称为" 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());

2 个答案:

答案 0 :(得分:0)

是的,这是可能的。

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

如果我们有一个界面说'interface1',那么就不允许以下内容:

interface1 object = new interface1();

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

interface1 ref = new Class1()和

Class1 ref = new Class1(),

以上'ref'都可以使用。

此外,您必须知道,界面的所有方法都是默认的公共和抽象方法,所有抽象方法必须才能实现。

希望这能回答你的问题。

答案 1 :(得分:-1)

以下是阅读本文的方法:

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

hmap.entrySet对象返回到实现 Set接口的set变量中。这意味着set实现了Set接口中声明的所有方法。因此,对iterator() 对象调用set方法是完全正确的,因为它是Set接口的方法之一。

set对象实现 Set接口。它不是一个界面。这里唯一的界面是Set