我试图让一个类正确地实现一个接口,但似乎碰到了一堵砖墙。我不确定我所写的代码是否正确,但这是我理解如何处理任务的唯一方式。我一直在给定一个接口与这样的信息:如何让一个类正确地实现一个接口?
package mvcchords;
public interface NoteStore {
int getNextNote();
boolean hasNextNote();
void noteAdded(int midicode);
void start(int sortOrder);
}
应用程序显示钢琴按键,允许用户点击它们,并保存他们点击的顺序和注意事项,为特定声音的midicode。然后,当用户点击播放时,它会按照音符保存的顺序调出曲调。当用户点击记事noteAdded
被调用。 hasNextNote
用于检查是否是保存的笔记的末尾。 getNextNote
用于从数组列表获得下一个音符,当用户点击播放按钮start
被调用。我被告知整数sortOrder
与这部分任务无关。我已被告知,被点击播放按钮时,它应调用start
方法,然后反复调用getNextNote
方法,直到所有的音符都被检索。
下面是到目前为止,我已经写了一个类来实现此接口的代码;
import java.util.*;
import mvcchords.*;
public class MyNoteStore implements NoteStore {
public ArrayList<Integer> Notes;
public void noteAdded(int midicode) {
Notes.add(midicode);
}
public boolean hasNextNote(int k) {
if(Notes.get(k) != null)
return true;
else
return false;
}
public int getNextNote(int k) {
if(hasNextNote(Notes.get(k)) == true)
return Notes.get(k);
else
return 0;
}
public void start(int sortOrder) {
for(int k = 0; k < Notes.size(); k++){
hasNextNote(k);
getNextNote(k);
}
}
}
此代码给了我一个错误说
MyNoteStore is not abstract and does not override abstract method `hasNextNote()` in `mvcchords.NoteStore`.
我不知道从哪里去,此地任何帮助,将不胜感激。如果需要进一步的信息,我会尽我所能澄清我提出的任何观点。
预先感谢您:)
是的,在网上看后,我发现我不能这样做,但我不知道如何正确地做这个类。我不希望得到答案,只是向正确的方向去暗示:)谢谢你的答复。 – user1079168
我不太了解问题领域(即我对钢琴和笔记一无所知)。但是我猜想Notes集合需要失去对k键的依赖,所以你可以从它中检索而不需要传递它。例如,如果Notes是一个列表,请将当前音符的索引保存在一个整数变量中(在该类中),并在获取下一个音符时将其提前)。我也假设你不能改变界面。这意味着你必须改变你的实现的内部。 – Gigi