xinye0123
发贴: 12
积分: 0
|
于 2005-03-01 21:18
//为什么输出是Wind.play()而不是Instrument.play() class Note { private int value; private Note(int val) { value = val; } public static final Note middleC = new Note(0), cSharp = new Note(1), cFlat = new Note(2); } // Etc.
class Instrument { public void play(Note n) { System.out.println("Instrument.play()"); } }
// Wind objects are instruments // because they have the same interface: class Wind extends Instrument { // Redefine interface method: public void play(Note n) { System.out.println("Wind.play()"); } }
public class Music { public static void tune(Instrument i) { // ... i.play(Note.middleC); } public static void main(String[] args) { Wind flute = new Wind(); tune(flute); // Upcasting } } ///:~
|