//创建父类(基类)
public class Music {
//定义属性
public String name;
public String Occupation;
//构造不带参数的函数
public Music() {
}
//构造带参数的函数
public Music(String name,String Occupation) {this.name =name;
this.Occupation=Occupation;
}
//父类的方法
public void play() {System.out.println("音乐家开始演奏");
}
}
//子类(派生类)
public class Piano extends Music {
//构造自己的构造函数(也可以不写,会继承父类)
public Piano() {
}
public Piano(String name,String Occupation) {
super(name,Occupation);
}
//重写父类的方法
public void play() {
System.out.println("演奏棋魂");
}
}
//B子类
public class Violin extends Music {
public Violin() {
}
public Violin(String name,String Occupation) {
super(name,Occupation);
}
public void play() {
System.out.println(" D大调小提琴协奏曲");
}
}
//管理类
public class Ren {
//定义自己的属性
public String name;
public String Occupation;
//定义构造函数
public Ren() {
}
public Ren(String name,String Occupation) {
this.name =name;
this.Occupation=Occupation;
}
//构建自己的方法,同时调用父类(Music)的方法
public void playmusic(Music mu) {
System.out.println(this.name+","+this.Occupation);
//因为父类的方法被重写,所以调用派生类重写后的方法
mu.play();
}
}
//测试类
public class MUsicTest {
public static void main(String[] args) {
//用管理类创建对象
Ren MA=new Ren("玛尔塔·阿格里奇","钢琴演奏家");
Ren BDF=new Ren("贝多芬","小提琴演奏家");
//调用管理类的方法,同时调用子类的方法
MA.playmusic(new Piano());
BDF.playmusic(new Violin());
}
}
//运行结果
玛尔塔·阿格里奇,钢琴演奏家
演奏棋魂
贝多芬,小提琴演奏家
D大调小提琴协奏曲