读书人

急有个关于JAVA向上转型的有关问题请

发布时间: 2011-12-29 22:09:38 作者: rapoo

急:有个关于JAVA向上转型的问题,请大家帮我看下;
我有个书上的程序不明白是哪里有问题,是关于向上转型的;
有四个类文件;
(1)
package thinkinjava.c07;

class Instrument {
public void play(){}
static void tune(Instrument i){
i.play();
}
}
(2)
package thinkinjava.c07;

public class Wind extends Instrument {
public void play(Note n) {
System.out.println( "Wind.play() " + n);
}
}
(3)
package thinkinjava.c07;

public class Note {
private String noteName;

private Note(String noteName) {
this.noteName = noteName;
}

public String toString() {
return noteName;
}

public static final Note
MIDDLE_C = new Note( "Middle C "),
C_SHARP = new Note( "C Sharp "),
B_FLAT = new Note( "B Flat ");
}
(4)
package thinkinjava.c07;

public class Music {
public static void tune(Instrument i){
i.play(Note.MIDDLE_C); //这里提示i.play这行出错
}
public static void main(String[] agrs){
Wind flute = new Wind();
tune(flute);
}
}

在这里我把tune()方法里的参数改成Instrument的子类Wind就是正常的,可是这种向上转型在书上说是允许的,我不明白这是哪里错了为什么错了,所以请大家帮帮我

[解决办法]
向上转型是允许的
[解决办法]
Instrument 没有 play(Note.MIDDLE_C) 这个方法 只有public void play(){}

读书人网 >J2SE开发

热点推荐