java定义乐器子类钢琴和小提琴在子类重写
时间: 2024-05-14 08:18:46 浏览: 18
父类乐器类中的方法play()的时候,应该如何重写呢?
在Java中,重写父类方法需要满足以下条件:
1. 子类方法名、参数列表、返回类型必须与父类方法完全一致。
2. 子类方法的访问修饰符不能低于父类方法,也就是说,如果父类方法是public,那么子类方法就不能是protected或private。
3. 子类方法不能抛出比父类方法更大的异常,或者声明的异常类型必须与父类方法声明的异常类型相同或是其子类。
钢琴子类重写play()方法的代码可以如下:
```java
public class Piano extends Instrument {
@Override
public void play() {
System.out.println("钢琴演奏中...");
}
}
```
小提琴子类重写play()方法的代码可以如下:
```java
public class Violin extends Instrument {
@Override
public void play() {
System.out.println("小提琴演奏中...");
}
}
```
这样,当我们调用钢琴或小提琴的play()方法时,就会输出相应的演奏信息了。
相关问题
编写程序实现乐手弹奏乐器。乐手可以弹奏不同的乐器从而发出不同的声音,弹奏的乐器包括二胡、钢琴和小提琴。 实现思路: (1)定义乐器类Instrument,包括方法makeSound()。 (2)定义乐器类的子类:二胡Erhu、钢琴Piano和小提琴Violin。 (3)定义乐手类Musician,可以弹奏各种乐器,给乐手不同的乐器让他弹奏。
下面是一个简单的 Python 代码实现:
```python
# 定义乐器类
class Instrument:
def makeSound(self):
pass # 抽象方法,需要在子类中实现
# 定义二胡类
class Erhu(Instrument):
def makeSound(self):
print("二胡演奏中...")
# 定义钢琴类
class Piano(Instrument):
def makeSound(self):
print("钢琴演奏中...")
# 定义小提琴类
class Violin(Instrument):
def makeSound(self):
print("小提琴演奏中...")
# 定义乐手类
class Musician:
def play(self, instrument):
instrument.makeSound()
# 实例化乐手
musician = Musician()
# 弹奏二胡
erhu = Erhu()
musician.play(erhu)
# 弹奏钢琴
piano = Piano()
musician.play(piano)
# 弹奏小提琴
violin = Violin()
musician.play(violin)
```
输出结果为:
```
二胡演奏中...
钢琴演奏中...
小提琴演奏中...
```
这个代码实现了乐手可以弹奏不同的乐器,包括二胡、钢琴和小提琴,每个乐器都有自己的演奏方法。乐手类可以接收不同的乐器作为参数,调用它们的演奏方法。
编写程序实现乐手弹奏乐器。乐手可以弹奏不同的乐器从而发出不同的声音 可以弹奏的乐器包括二胡、钢琴和琵琶实现思路及关键代码 D定义乐器类Instrument,包括方法makeSound()2定义乐器类的子类: 胡Erhu、钢琴Piano和小提琴Violin 3定义乐手类Musician,可以弹奏各种乐器 play(Instrument i) 0定义测试类,给乐手不同的乐器让他弹奏
好的,下面是实现思路及关键代码:
```java
// 定义乐器类
public class Instrument {
public void makeSound() {
// 乐器发出的声音,由子类实现
}
}
// 定义二胡类
public class Erhu extends Instrument {
@Override
public void makeSound() {
System.out.println("二胡发出了美妙的声音!");
}
}
// 定义钢琴类
public class Piano extends Instrument {
@Override
public void makeSound() {
System.out.println("钢琴发出了清脆的声音!");
}
}
// 定义小提琴类
public class Violin extends Instrument {
@Override
public void makeSound() {
System.out.println("小提琴发出了悠扬的声音!");
}
}
// 定义乐手类
public class Musician {
public void play(Instrument i) {
i.makeSound();
}
}
// 测试类
public class Test {
public static void main(String[] args) {
Musician musician = new Musician();
Erhu erhu = new Erhu();
Piano piano = new Piano();
Violin violin = new Violin();
musician.play(erhu); // 乐手弹奏二胡
musician.play(piano); // 乐手弹奏钢琴
musician.play(violin); // 乐手弹奏小提琴
}
}
```
以上代码实现了乐手弹奏乐器的功能,乐手可以弹奏不同的乐器从而发出不同的声音。乐器类是一个抽象的基类,它包含了一个抽象的方法`makeSound()`,子类根据自己的特点实现这个方法,从而发出不同的声音。乐手类中有一个`play()`方法,接受一个乐器对象作为参数,根据乐器对象调用其`makeSound()`方法,从而让乐器发出声音。测试类中创建了一个乐手对象和三个不同的乐器对象,通过乐手对象调用`play()`方法来实现乐手弹奏不同的乐器。