类与对象(抽象类、接口)练习


需求:我们现在有乒乓球运动员和篮球运动员,乒乓球教练和篮球教练。为了出国交流,跟乒乓球相关的人员都需要学习英语。请分析,这个案例中有哪些具体类,哪些抽象类,哪些接口,并用代码实现。

分析:从具体到抽象
实现:从抽象到具体
使用:使用的是具体的类的对象

 

抽象说英语接口:

1 package test;
2 //说英语的接口
3 public interface SpeakEnglish {
4     public abstract void speak();
5 }
public interface SpeakEnglish

抽象人类:

 1 package test;
 2 //抽象人类
 3 public abstract class Person {
 4     private String name;
 5     private int age;
 6     //无参构造函数
 7     public Person() {
 8         super();
 9     }
10     //有参构造函数
11     public Person(String name, int age) {
12         super();
13         this.name = name;
14         this.age = age;
15     }
16     
17     public String getName() {
18         return name;
19     }
20     public void setName(String name) {
21         this.name = name;
22     }
23     public int getAge() {
24         return age;
25     }
26     public void setAge(int age) {
27         this.age = age;
28     }
29     //吃的抽象方法
30     public abstract void eat();
31 }
public abstract class Person

抽象教练类:

 1 package test;
 2 //抽象教练类
 3 public abstract class Coach extends Person{
 4     //无参构造函数
 5     public Coach() {
 6         super();
 7     }
 8     //有参构造函数
 9     public Coach(String name, int age) {
10         super(name, age);
11     }
12     //教授的抽象方法
13     public abstract void teach();
14 }
public abstract class Coach extends Person

抽象运动员类:

 1 package test;
 2 //抽象运动员类
 3 public abstract class Player extends Person{
 4     //无参构造函数
 5     public Player() {
 6         super();
 7     }
 8     //有参构造函数
 9     public Player(String name, int age) {
10         super(name, age);
11     }
12     //学习的抽象方法
13     public abstract void study();
14 }
public abstract class Player extends Person

具体篮球教练类:

 1 package test;
 2 
 3 public class BasketballCoach extends Coach{
 4     
 5     public BasketballCoach() {
 6         super();
 7     }
 8 
 9     public BasketballCoach(String name, int age) {
10         super(name, age);
11     }
12 
13     @Override
14     public void teach() {
15         System.out.println("篮球教练教如何运球和投篮");
16     }
17     
18     @Override
19     public void eat() {
20         System.out.println("篮球教练吃肉");
21     }
22 }
public class BasketballCoach extends Coach

具体乒乓球教练类:

 1 package test;
 2 
 3 public class PingPangCoach extends Coach implements SpeakEnglish{
 4     public PingPangCoach() {
 5         super();
 6     }
 7 
 8     public PingPangCoach(String name, int age) {
 9         super(name, age);
10     }
11 
12     @Override
13     public void teach() {
14         System.out.println("乒乓球教练教如何发球和接球");
15     }
16     
17     @Override
18     public void eat() {
19         System.out.println("乒乓球教练吃馒头");
20     }
21     
22     @Override
23     public void speak() {
24         System.out.println("乒乓球教练说英语");
25     }
26 }
public class PingPangCoach extends Coach implements SpeakEnglish

具体篮球运动员类:

 1 package test;
 2 
 3 public class BasketballPlayer extends Player{
 4     
 5     public BasketballPlayer() {
 6         super();
 7     }
 8 
 9     public BasketballPlayer(String name, int age) {
10         super(name, age);
11     }
12 
13     @Override
14     public void study() {
15         System.out.println("篮球运动员学习如何运球和投篮");
16     }
17     
18     @Override
19     public void eat() {
20         System.out.println("篮球运动运吃肉");
21     }
22 }
public class BasketballPlayer extends Player

具体乒乓球运动员类:

 1 package test;
 2 
 3 public class PingPangPlayer extends Player implements SpeakEnglish{
 4     public PingPangPlayer() {
 5         super();
 6     }
 7 
 8     public PingPangPlayer(String name, int age) {
 9         super(name, age);
10     }
11     
12     @Override
13     public void study() {
14         System.out.println("乒乓球运动员学习如何发球和接球");
15     }
16     
17     @Override
18     public void eat() {
19         System.out.println("乒乓球运动员吃馒头");
20     }
21     
22     @Override
23     public void speak() {
24         System.out.println("乒乓球运动员说英语");
25     }
26 }
public class PingPangPlayer extends Player implements SpeakEnglish

测试类:

 1 package test;
 2 //测试类
 3 public class PersonDemo {
 4     public static void main(String[] args) {
 5         //创建乒乓球运动员对象
 6         PingPangPlayer pingPang=new PingPangPlayer();
 7         pingPang.setName("张三");
 8         pingPang.setAge(25);
 9         System.out.println(pingPang.getName()+","+pingPang.getAge());
10         pingPang.eat();
11         pingPang.study();
12         pingPang.speak();
13         System.out.println("----------------------");
14         
15         //创建篮球运动员对象
16         BasketballPlayer lanQiu=new BasketballPlayer("李四",20);
17         System.out.println(lanQiu.getName()+","+lanQiu.getAge());
18         lanQiu.eat();
19         lanQiu.study();
20     }
21 
22 }
public class PersonDemo

测试运行结果如下:

 

相关