185-186 抽象类+接口案例/运动员和教练
需求:有乒乓球运动员、篮球运动员、乒乓球教练、篮球教练。签了出过交流,乒乓球教练、乒乓球运动员需要学习英语。请用所学知识分析,这个案例中有哪些具体类、哪些抽象类、哪些接口,并用代码实现
分析:从具体到抽象的分析步骤。具体的是:乒乓球运动员、篮球运动员、乒乓球教练、篮球教练,抽象的是:运动员、教练,更抽象的是:人。共性:学习英语。
思路
1,定义说英语接口 | 成员方法-说英语 |
2,定义抽象人类 | 成员变量-姓名、年龄 构造方法-无参、带参 成员方法-getter、setter、吃饭 |
3,定义抽象教练类 | 继承人类 构造方法-无参、带参 成员方法-教育 |
4,定义抽象运动员类 | 继承人类 构造方法-无参、带参 成员方法-学习 |
5,定义具体篮球教练类 | 继承人类 构造方法-无参、带参 重写方法-吃饭、教育 |
6,定义具体乒乓球教练类 | 继承人类 构造方法-无参、带参 重写方法-吃饭、教育、说英语 |
7,定义具体篮球运动员类 | 继承人类 构造方法-无参、带参 重写方法-吃饭、学习 |
8,定义具体乒乓球运动员类 | 继承人类 构造方法-无参、带参 重写方法-吃饭、学习、说英语 |
9,定义测试类 | main方法、创建具体类对象、调用变量and方法 |
package itheima05E186;
public class PersonDemo {
public static void main(String[] args) {
PingpangCoach pc = new PingpangCoach();
pc.setName("乒乓球教练王浩");
pc.setAge(37);
System.out.println(pc.getName()+","+pc.getAge());
pc.eat();
pc.teach();
pc.speakEnglish();
System.out.println("--------");
PingpangPlayer pp = new PingpangPlayer("乒乓球运动员邓亚萍",21);
System.out.println(pp.getName()+","+pp.getAge());
pp.eat();
pp.study();
pp.speakEnglish();
System.out.println("________");
BasketballCoach bc = new BasketballCoach("篮球教练姚明",35);
System.out.println(bc.getName()+","+bc.getAge());
bc.eat();
bc.teach();
System.out.println("--------");
BasketballPlayer bp = new BasketballPlayer("篮球运动员林书豪",22);
System.out.println(bp.getName()+","+bp.getAge());
bp.eat();
bp.study();
System.out.println("--------");
}
}
--------------------------------------------------------------
package itheima05E186;
public interface SpeakEnglish {
void speakEnglish();
}
--------------------------------------------------------------
package itheima05E186;
public 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 void eat(){
System.out.println("人是铁饭是钢,一顿不吃饿得慌");
}
}
--------------------------------------------------------------
package itheima05E186;
public abstract class Coach extends Person{
public Coach() {
}
public Coach(String name, int age) {
super(name, age);
}
public abstract void teach();
}
--------------------------------------------------------------
package itheima05E186;
public abstract class Player extends Person{
public Player() {
}
public Player(String name, int age) {
super(name, age);
}
public abstract void study();
}
--------------------------------------------------------------
package itheima05E186;
public class BasketballCoach extends Coach{
public BasketballCoach() {
}
public BasketballCoach(String name, int age) {
super(name, age);
}
@Override
public void eat() {
System.out.println("篮球教练吃羊肉");
}
@Override
public void teach() {
System.out.println("篮球教练教篮球");
}
}
--------------------------------------------------------------
package itheima05E186;
public class BasketballPlayer extends Player{
public BasketballPlayer() {
}
public BasketballPlayer(String name, int age) {
super(name, age);
}
@Override
public void eat() {
System.out.println("篮球运动员吃牛肉");
}
@Override
public void study() {
System.out.println("篮球运动员学篮球");
}
}
--------------------------------------------------------------
package itheima05E186;
public class PingpangCoach extends Coach implements SpeakEnglish{
public PingpangCoach() {
}
public PingpangCoach(String name, int age) {
super(name, age);
}
@Override
public void eat() {
System.out.println("乒乓球教练吃大米粥");
}
@Override
public void teach() {
System.out.println("乒乓球教练教乒乓球");
}
@Override
public void speakEnglish() {
System.out.println("乒乓球教练学英语");
}
}
--------------------------------------------------------------
package itheima05E186;
public class PingpangPlayer extends Player implements SpeakEnglish{
public PingpangPlayer() {
}
public PingpangPlayer(String name, int age) {
super(name, age);
}
@Override
public void eat() {
System.out.println("乒乓球运动员吃小米粥");
}
@Override
public void study() {
System.out.println("乒乓球运动员学习乒乓球");
}
@Override
public void speakEnglish() {
System.out.println("乒乓球运动员学英语");
}
}