向上转型的问题
Java code
package polymorphism.music;
public enum Note {
MIDDLE_C, C_SHARP, B_FLAT; // Etc.
}
package polymorphism.music;
class Instrument {
public void play(Note n) {
System.out.println("Instrument.play()");
}
}
package polymorphism.music;
// Wind objects are instruments
// because they have the same interface:
public class Wind extends Instrument {
// Redefine interface method:
public void play(Note n) {
System.out.println("Wind.play() " + n);
}
}
package polymorphism.music;
public class Music {
public static void tune(Instrument i) {
// ...
i.play(Note.MIDDLE_C);
}
public static void main(String[] args) {
Wind flute = new Wind();
tune(flute); // Upcasting
}
}
结果:
D:\my java>javac -d . Instrument.java Music.java Wind.java Note.java
D:\my java>java Music
Exception in thread "main"
java.lang.NoClassDefFoundError: Music
Caused by: java.lang.ClassNotFoundException: Music
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
Could not find the main class: Music. Program will exit.
我不明白为什么编译通过 但运行不了呢 那点出错了呢
------解决方案--------------------CLASS文件没有找到Music
你看一下MUSIC.class文件在不在
------解决方案--------------------路径不对......
如下:
D:\my java\polymorphism\music>javac -d . Instrument.java Music.java Wind.java No
te.java
D:\my java\polymorphism\music>java polymorphism.music.Music