直接调用接口的实例方法
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抽象并且所有抽象必须实施方法。
希望这能回答您的问题。
我是 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抽象并且所有抽象必须实施方法。
希望这能回答您的问题。