/* 继承中接口与抽象类练习:乒乓球运动员和篮球运动员乒乓球教练和篮球教练。为了出国交流,乒乓球相关人员都需要学习英语分析: 乒乓球运动员:属性: 姓名,年龄,技能: 打乒乓球 篮球运动员: 属性: 姓名年龄, 技能: 打篮球 乒乓球教练: 属性: 姓名,年龄, 技能: 教练乒乓球 篮球教练: 属性: 姓名,年龄 技能: 教练 篮球 运动员抽象类: 属性: 姓名,年龄, 方法: 打球 教练抽象类: 属性: 姓名年龄, 方法: 教练 接口: 学习英语 实现: 接口: 学习英语 运动员抽象类: 属性: 姓名,年龄, 方法: 打球 教练抽象类: 属性: 姓名年龄, 方法: 教练 乒乓球运动员: 继承 接口与运动员抽象类 篮球运动员: 继承运动员抽象类 */ //学习英语接口interface LearnEnglish{ public abstract void learn();}//运动员类abstract class Sporter{ private String name; private int age; //构造方法 Sporter(){} Sporter(String name, int age){ this.name = name ; this.age = age; } public abstract void play();}abstract class Trainer{ private int age; private String name; //构造方法 Trainer(){} Trainer(String name, int age){ this.name = name; this.age = age; } public abstract void train();}//乒乓球运动员 class PingPenPlayer extends Sporter implements LearnEnglish{ PingPenPlayer(String name, int age){ super(name, age); } public void play(){ System.out.println("pingpeng plays "); } public void learn(){ System.out.println("learn english"); }}class BasketballPlayer extends Sporter{ BasketballPlayer(String name, int age){ super(name,age); } //方法重写 public void play(){ System.out.println("play basketballl"); }}class PingPenTrainer extends Trainer implements LearnEnglish{ PingPenTrainer(String name, int age){ super(name, age); } //抽象教练父类方法 public void train(){ System.out.println("pingpeng train "); } //c重写学习英语接口方法 public void learn(){ System.out.println(" trainer learn english"); }}class BasketballTrainer extends Trainer{ BasketballTrainer(String name, int age){ super(name, age); } //抽象教练父类方法 public void train(){ System.out.println("BasketballTrainer train"); }}public class InterfaceDemo{ public static void main(String[] args){ //乒乓球运动员 Sporter pingpeng = new PingPenPlayer("张继科", 30); pingpeng.play(); }}