5.创建一个接口 Playable,包括方法 play(). 创建类 Guitar 和 Piano,它们都实现了 Playable 接口。编写一个 Musician 类,该类接受一个 Playable 对象作为参数,并调用 play() 方法。演示接口的多态性。
时间: 2024-10-15 11:23:48 浏览: 20
在面向对象编程中,接口(如 Playable)是一种规范,它定义了一组方法签名,但并不包含具体的实现。比如我们有这样一个 Playable 接口:
```java
public interface Playable {
void play();
}
```
接下来,我们可以创建两个实现了 Playable 接口的具体类,Guitar 和 Piano:
```java
public class Guitar implements Playable {
@Override
public void play() {
System.out.println("Playing guitar...");
}
}
public class Piano implements Playable {
@Override
public void play() {
System.out.println("Playing piano...");
}
}
```
现在,我们创建 Musician 类,它有一个 Playable 类型的参数,可以接受任何实现了 Playable 的对象:
```java
public class Musician {
private Playable instrument;
public Musician(Playable instrument) {
this.instrument = instrument;
}
public void perform() {
instrument.play(); // 这里体现了多态性,会根据传入的具体乐器类型执行对应的方法
}
}
```
你可以这样使用这个类:
```java
Musician musician = new Musician(new Guitar());
musician.perform(); // 输出 "Playing guitar..."
musician.instrument = new Piano();
musician.perform(); // 输出 "Playing piano..."
```
在这个例子中,`perform()` 方法通过 Playable 接口调用 `play()` 方法,体现了多态性,即无论传入的是吉他还是钢琴,音乐家都可以正确地演奏。
阅读全文