有一个抽象类Instrument,代表乐器,包含抽象方法play()用于演奏乐器。创建三个子类Guitar(吉他)、Piano(钢琴)和Violin(小提琴),分别实现演奏方法,在控制台输出不同乐器的演奏描述。
时间: 2024-11-13 12:22:48 浏览: 32
在这个音乐系统的抽象层面上,我们首先定义一个名为`Instrument`的抽象类,表示所有的乐器共享的行为——演奏。抽象类通常包含一些抽象方法,例如`play()`:
```java
public abstract class Instrument {
private String name;
public Instrument(String name) {
this.name = name;
}
// 抽象方法,需要子类提供具体实现
public abstract void play();
public String getName() {
return name;
}
// 简单的演奏描述,每个子类可以重写此方法
protected void basicPlayDescription() {
System.out.println(getName() + "正在演奏...");
}
}
```
然后,我们创建三个具体的乐器子类,每个子类继承自`Instrument`,并实现了`play()`方法:
```java
public class Guitar extends Instrument {
public Guitar(String name) {
super(name);
}
@Override
public void play() {
basicPlayDescription();
System.out.println("吉他在弦上轻轻拨动,发出清脆的声音.");
}
}
public class Piano extends Instrument {
public Piano(String name) {
super(name);
}
@Override
public void play() {
basicPlayDescription();
System.out.println("钢琴键在指下跳跃,流淌出美妙的旋律.");
}
}
public class Violin extends Instrument {
public Violin(String name) {
super(name);
}
@Override
public void play() {
basicPlayDescription();
System.out.println("小提琴弓在弦上滑动,拉出悠扬的曲调.");
}
}
```
现在,当你创建并调用这些乐器的`play()`方法时,将输出对应乐器的独特演奏描述:
```java
public static void main(String[] args) {
Instrument guitar = new Guitar("尤克里里");
guitar.play(); // 输出关于尤克里里的演奏描述
Instrument piano = new Piano("贝森朵夫钢琴");
piano.play(); // 输出关于贝森朵夫钢琴的演奏描述
Instrument violin = new Violin("斯特拉迪瓦里小提琴");
violin.play(); // 输出关于斯特拉迪瓦里小提琴的演奏描述
}
```
阅读全文