class Instrument {
public void play() {
System.out.println("Instrument.play()");
}
public String toString() {
return "Instrument";
}
public void adjust() {}
}class Wind extends Instrument {
public void play() {
System.out.println("Wind.play()");
}
public String toString() {
return "Wind";
}
public void adjust() {}
}class Percussion extends Instrument {
public void play() {
System.out.println("Percussion.play()");
}
public String toString() {
return "Percussion";
}
public void adjust() {}
}class Stringed extends Instrument {
public void play() {
System.out.println("Stringed.play()");
}
public String toString() {
return "Stringed";
}
public void adjust() {}
}class Brass extends Wind {
public void play() {
System.out.println("Brass.play()");
}
public void adjust() {
System.out.println("Brass.adjust()");
}
}class Woodwind extends Wind {
public void play() {
System.out.println("Woodwind.play()");
}
public String toString() {
return "Woodwind";
}
}public class E03_MusicToString {
static Instrument[] orchestra = {
new Wind(),
new Percussion(),
new Stringed(),
new Brass(),
new Woodwind()
};
public static void printAll(Instrument[] orch){
for(int i = 0; i < orch.length; i++)
System.out.println(orch[i]);
}
public static void main(String args[]) {
printAll(orchestra);
}
} ///:~
解决方案 »
- 堆栈溢出,如何处理??
- 随便给一个整数,怎么找出几个素数相乘等于这个整数
- 请求帮忙写二维数组保存到文件的函数和二维数组读取函数
- JProgressBar在做启动画面载入时如何确定什么时候完事?
- 紧急求救SCJP考试问题!!急了!
- 求教!!!!!
- JDK1.4.2配不好啊!(十万火急!!!!!!!!!!!)
- Oracle中使用isClosed()并不能判断Connection是否已经关闭?
- 我感觉Java的swing似乎没必要学习了,是这样的吗?
- 目前广州市有哪些单位需要招聘PB或JAVA程序员!——感激不尽!
- java面试
- 为什么??java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.
printAll(orchestra);
}
调用printAll方法
public static void printAll(Instrument[] orch){
for(int i = 0; i < orch.length; i++)
System.out.println(orch[i]);
}
核心也就在这个System.out.println(orch[i]); 了
注意:执行System.out.println(x);时会自动调用x对象的toString()方法,所以,对于
static Instrument[] orchestra = {
new Wind(),
new Percussion(),
new Stringed(),
new Brass(),
new Woodwind()
};
中的new Wind(),
new Percussion(),
new Stringed(),
就依次调用其toString方法,输出
Wind
Percussion
Stringed
而对于new Brass(),由于其自身没有toString()方法,所以会调用其父类Wind的toString()方法,输出Wind
最后一个new Woodwind(),调用其自身的toString方法,输出Woodwind
所以最终结果为:
Wind
Percussion
Stringed
Wind
Woodwind
println(a);//相当于println(a.toString());
Do you know it?