/** * 1.编写程序实现乐手弹奏乐器。乐手可以弹奏不同的乐器从而发出不同的声音。 * 可以弹奏的乐器包括二胡、钢琴和琵琶。 * 实现思路及关键代码: * 1)定义乐器类Instrument,包括方法makeSound() * 2)定义乐器类的子类:二胡ErHu、钢琴Piano和小提琴Violin * 3)定义乐手类Musician,可以弹奏各种乐器play(Instrument i) * 4)定义测试类,给乐手不同的乐器让他弹奏 */ public class Test03 { public static void main(String[] args) { //创建乐手对象 Musician musician = new Musician(); /* //乐手拉二胡 musician.play(new ErHu()); //二胡发出美妙的音乐...... //乐手演奏钢琴 musician.play(new Piano()); //钢琴发出悠扬的乐声...... //乐手小提琴表演 musician.play(new Violin()); //小提琴发出动人的旋律...... */ //创建乐器对象(父类型引用指向子类型对象) Instrument erHu = new ErHu(); Instrument piano = new Piano(); Instrument violin = new Violin(); //乐手弹奏各种乐器 musician.play(erHu); //二胡发出美妙的音乐...... musician.play(piano); //钢琴发出悠扬的乐声...... musician.play(violin); //小提琴发出动人的旋律...... } } //乐手类 class Musician{ //弹奏乐器的方法 public void play(Instrument instrument){ instrument.makeSound(); } } //乐器类 父类 class Instrument{ //乐器发声的方法 public void makeSound(){ } } //二胡类 子类 class ErHu extends Instrument{ //重写乐器发声的方法 public void makeSound(){ System.out.println("二胡发出美妙的音乐......"); } } //钢琴类 class Piano extends Instrument{ //重写乐器发声的方法 public void makeSound(){ System.out.println("钢琴发出悠扬的乐声......"); } } //小提琴类 class Violin extends Instrument{ //重写乐器发声的方法 public void makeSound(){ System.out.println("小提琴发出动人的旋律......"); } }