好的,伙计们,我有一个抽象的仪器类
public abstract class Instrument {
String name;
public Instrument(String name) {
this.name = name;
}
public void warmUp() {
System.out.println("Do re mi");
}
public abstract String Play(String notes);
}
我使用 Sax 和 Trumpet 类来扩展和实现抽象方法
public class Trumpet extends Instrument {
public Trumpet(String name) {
super(name);
}
public String play(String notes) {
String str;
str = name + " plays Trumpet: " + notes;
return str;
}
public String getNotes() {
return notes;
}
public String toString(){
String str = name + " plays Trumpet: " + notes ;
return str;
}
萨克斯
public class Sax extends Instrument {
public Sax(String name) {
super(name);
}
public String play(String notes) {
String str;
str = name + " plays Trumpet: " + notes;
return str;
}
public String getNotes() {
return notes;
}
public String toString(){
String str = name + " plays Sax: " + notes ;
return str;
}
现在我需要创建一个乐队类来创建一个由小号和萨克斯组成的乐队。它允许用户添加乐器(萨克斯或小号)并播放输入音符。当乐队演奏时,这意味着所有乐器都应演奏输入音符。
public class Band extends Instrument{
ArrayList<Instrument> myBand = new ArrayList<Instrument>();
public Band(String name) {
super(name);
}
public void addInstrument(Instrument a) {
myBand.add(a);
}
public String play(String notes) {
for(Instrument inst : myBand) {
inst.play(notes);
System.out.println(inst.play(notes));
}
return toString();
}
它不一定必须在 arrayList 中,我只是认为它会使事情更容易处理。我相信到目前为止我的一切都是正确的,但我的问题出在乐队的演奏方法上,它应该显示乐器的名称,所有乐器都演奏相同的音符。
示例驱动程序:
myBand.addInstrument (new Sax("Anna"));
myBand.addInstrument (new Trumpet("Leon"));
myBand.addInstrument (new Sax("Ben"));
myBand.play("Dum da-da DUM");
输出:
Anna 吹萨克斯 : Dum da-da DUM
Leon 吹小号 : Dum da-da DUM
Ben 吹萨克斯 : Dum da-da DUM
我知道我需要一个循环来遍历数组列表,但不确定如何从 sax 和 trumpet 类中获取 play 方法,它们都播放相同的音符。
感谢您的任何帮助!
我用循环更新了我的代码,但这是我得到的输出:
Anna plays Trumpet: Dum da-da DUM
Leon plays Trumpet: Dum da-da DUM
Ben plays Trumpet: Dum da-da DUM