JAVA基础 练习-12-运动员和教练
📑需求:
我们现在有乒乓球运动员和篮球运动员,丘乓球教练和篮球教练。为了出国交流,跟乒乓球相关的人员都需要学习英语。
请用所学知识分析,这个案例中有哪些具体类,哪些抽象类,哪些接口,并用代码实现
分析:
分析:从具体到抽象
乒乓球运动员
篮球运动员
乒乓球教练
发篮球教练
实现:从抽象到具体
使用: 使用的是具体的类的对象
思路:
- 定义说英语的接口
- 成员方法: 说英语();
- 定义抽象人类
- 成员变量: 姓名,年龄;构造方法:无参,带参;成员方法: get/set方法, 吃饭();
- 定义抽象教练类,继承人类
- 构造方法: 无参,带参;成员方法: 教();
- 定义抽象运动员类,继承人类
- 构造方法: 无参,带参;成员方法: 学习();
- 定义具体篮球教练类,继承教练类
- 构造方法: 无参,带参;成员方法: 重写吃饭(){…};
- 定义具体乒乓球教练类,继承教练类,实现说英语接口
- 构造方法: 无参,带参; 成员方法: 重写吃饭(){…}, 重写教(){…}, 重写说英语(){…}
- 定义具体篮球运动员类, 继承运动员类
- 构造方法:无参,带参;成员方法: 重写吃饭(){…}, 重写学习(){…}
- 定义具体乒乓球运动员类: 继承运动员类, 实现英语接口
- 构造方法: 无参,带参; 成员方法: 重写吃饭(){…}, 重写学习(){…}, 重写说英语(){…}
- 定义测试类, 写代码测试
/*
思路:
1. 定义说英语的接口 成员方法: 说英语();
2. 定义抽象人类 成员变量: 姓名,年龄;构造方法:无参,带参;成员方法: get/set方法, 吃饭();
3. 定义抽象教练类,继承人类 构造方法: 无参,带参;成员方法: 教();
4. 定义抽象运动员类,继承人类 构造方法: 无参,带参;成员方法: 学习();
5. 定义具体篮球教练类,继承教练类 构造方法: 无参,带参;成员方法: 重写吃饭(){...};
6. 定义具体乒乓球教练类,继承教练类,实现说英语接口
构造方法: 无参,带参; 成员方法: 重写吃饭(){...}, 重写教(){...}, 重写说英语(){...}
7. 定义具体篮球运动员类, 继承运动员类 构造方法:无参,带参;成员方法: 重写吃饭(){...}, 重写学习(){...}
8. 定义具体乒乓球运动员类: 继承运动员类, 实现英语接口
构造方法: 无参,带参; 成员方法: 重写吃饭(){...}, 重写学习(){...}, 重写说英语(){...}
9. 定义测试类, 写代码测试
*/
代码主体
//抽象人类
public abstract class Person {
private String name;
private int age;
public Person() {
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public abstract void eat();
}
//抽象教练类
public abstract class Coach extends Person {
public Coach() {
}
public Coach(String name, int age) {
super(name, age);
}
public abstract void teach();
}
//抽象运动员类
public abstract class Player extends Person {
public Player() {
}
public Player(String name, int age) {
super(name, age);
}
public abstract void study();
}
//说英语的接口
public interface SpeakEnglish {
public abstract void speak();
}
//具体篮球教练类
public class BasketballCoach extends Coach {
public BasketballCoach() {
}
public BasketballCoach(String name, int age) {
super(name, age);
}
@Override
public void teach() {
System.out.println("篮球教练教如何运球和投篮");
}
@Override
public void eat() {
System.out.println("篮球教练吃羊肉喝羊奶");
}
}
//具体篮球运动员类
public class BasketballPlayer extends Player {
public BasketballPlayer() {
}
public BasketballPlayer(String name, int age) {
super(name, age);
}
@Override
public void study() {
System.out.println("篮球运动员学习如何运球和投篮");
}
@Override
public void eat() {
System.out.println("篮球运动员吃牛肉,喝牛奶");
}
}
//具体乒乓球教练类
public class PingPangCoach extends Coach implements SpeakEnglish {
public PingPangCoach() {
}
public PingPangCoach(String name, int age) {
super(name, age);
}
@Override
public void teach() {
System.out.println("乒乓球教如何发球和接球");
}
@Override
public void eat() {
System.out.println("乒乓球教练吃小白菜,喝大米粥");
}
@Override
public void speak() {
System.out.println("乒乓球教练说英语");
}
}
//具体乒乓球运动员类
public class PingPangPlayer extends Player implements SpeakEnglish {
public PingPangPlayer() {
}
public PingPangPlayer(String name, int age) {
super(name, age);
}
@Override
public void study() {
System.out.println("乒乓球运动员学习如何发球和接球");
}
@Override
public void eat() {
System.out.println("乒乓球运动员吃大白菜,喝小米粥");
}
@Override
public void speak() {
System.out.println("乒乓球运动员说英语");
}
}
//测试类
public class PersonDemo {
public static void main(String[] args) {
//创建对象
PingPangPlayer ppp = new PingPangPlayer();
ppp.setName("小明");
ppp.setAge(18);
System.out.println(ppp.getName() + ", " + ppp.getAge());
ppp.eat();
ppp.study();
ppp.speak();
System.out.println("----------------------");
BasketballPlayer bbb = new BasketballPlayer();
bbb.setName("小刚");
bbb.setAge(20);
System.out.println(bbb.getName() + "; " + bbb.getAge());
bbb.eat();
bbb.study();
System.out.println("-----------------------");
PingPangCoach pp = new PingPangCoach();
pp.setName("小红");
pp.setAge(22);
System.out.println(pp.getName() + ", " + pp.getAge());
pp.eat();
pp.teach();
pp.speak();
System.out.println("--------------------------");
BasketballCoach bb = new BasketballCoach();
bb.setName("姚明");
bb.setAge(30);
System.out.println(bb.getName() + ", " + bb.getAge());
bb.eat();
bb.teach();
}
}
pp.speak();
System.out.println("--------------------------");
BasketballCoach bb = new BasketballCoach();
bb.setName("姚明");
bb.setAge(30);
System.out.println(bb.getName() + ", " + bb.getAge());
bb.eat();
bb.teach();
}
}