在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