在Java中,接口方法如何在没有主体定义的情况下执行函数?

在Java中,接口方法如何在没有主体定义的情况下执行函数?,java,object,collections,interface,iterator,Java,Object,Collections,Interface,Iterator,例如,迭代器接口中的hasNext()和next()方法通过检查集合中是否有下一行/对象并分别返回下一个对象来执行其功能,而不重写这些方法 请帮我理解 下面是示例代码段: import java.io.*; 导入java.util.*; 课堂测试{ 公共静态void main(字符串[]args){ ArrayList=新建ArrayList(); 列表。添加(“A”); 列表。添加(“B”); 列表。添加(“C”); 列表。添加(“D”); 列表。添加(“E”); //遍历列表的迭代器 迭代器

例如,迭代器接口中的
hasNext()
next()
方法通过检查集合中是否有下一行/对象并分别返回下一个对象来执行其功能,而不重写这些方法

请帮我理解

下面是示例代码段:

import java.io.*;
导入java.util.*;
课堂测试{
公共静态void main(字符串[]args){
ArrayList=新建ArrayList();
列表。添加(“A”);
列表。添加(“B”);
列表。添加(“C”);
列表。添加(“D”);
列表。添加(“E”);
//遍历列表的迭代器
迭代器迭代器=list.Iterator();
System.out.println(“列表元素:”);
while(iterator.hasNext())
System.out.print(iterator.next()+);
System.out.println();
} 
}
接口方法不执行函数,这是接口的全部要点。它们指定了实现它们的类必须满足的契约

阅读
迭代器#hasNext
的文档:

 * Returns {@code true} if the iteration has more elements.
 * (In other words, returns {@code true} if {@link #next} would
 * return an element rather than throwing an exception.)
 *
 * @return {@code true} if the iteration has more elements
接口所说的就是实现它的任何类必须做的事情。how由实现它的类决定,因此完成检查的机制由实现迭代器的任何类决定

在您的示例中,迭代器是在中实现的

java.util.ArrayList.Itr
接口方法不执行函数,这是接口的全部要点。它们指定了实现它们的类必须满足的契约

阅读
迭代器#hasNext
的文档:

 * Returns {@code true} if the iteration has more elements.
 * (In other words, returns {@code true} if {@link #next} would
 * return an element rather than throwing an exception.)
 *
 * @return {@code true} if the iteration has more elements
接口所说的就是实现它的任何类必须做的事情。how由实现它的类决定,因此完成检查的机制由实现迭代器的任何类决定

在您的示例中,迭代器是在中实现的


java.util.ArrayList.Itr

是的,我同意。但是,试着理解多一点,我可以看到上面的方法返回的值中没有写“return”语句。@AsikRahman.M我不明白。你指的是哪些方法?对不起,我现在明白了,正如你提到的,
java.util.ArrayList.Itr
类实现了
hasNext()
next()
方法,对吗?是的<代码>迭代器本身只定义了方法签名(输入参数的类型和输出类型)。好的,谢谢@Ben RYes,我同意了。但是,试着理解多一点,我可以看到上面的方法返回的值中没有写“return”语句。@AsikRahman.M我不明白。你指的是哪些方法?对不起,我现在明白了,正如你提到的,
java.util.ArrayList.Itr
类实现了
hasNext()
next()
方法,对吗?是的<代码>迭代器本身只定义了方法签名(输入参数的类型和输出类型)。好的,谢谢@Ben R