/**
* 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("小提琴发出动人的旋律......");
}
}