
球员抽象类
public abstract class Player {
protected String name;
public Player(String name) {
this.name = name;
}
public abstract void attack();
public abstract void defense();
}
三种不同的球员
public class Forwards extends Player {
public Forwards(String name) {
super(name);
}
@Override
public void attack() {
System.out.println(name + " 前锋进攻");
}
@Override
public void defense() {
System.out.println(name + " 前锋防守");
}
}
public class Center extends Player {
public Center(String name) {
super(name);
}
@Override
public void attack() {
System.out.println(name + " 中锋进攻");
}
@Override
public void defense() {
System.out.println(name + " 中锋防守");
}
}
public class Guards extends Player {
public Guards(String name) {
super(name);
}
@Override
public void attack() {
System.out.println(name + " 后卫进攻");
}
@Override
public void defense() {
System.out.println(name + " 后卫防守");
}
}
不懂英语的外籍球员
public class ForeignCenter {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void jingong() {
System.out.println(name + " 外籍中锋进攻");
}
public void fangshou() {
System.out.println(name + " 外籍中锋防守");
}
}
作为外籍球员适配器的翻译者
public class Translator extends Player {
private ForeignCenter foreignCenter = new ForeignCenter();
public Translator(String name) {
super(name);
foreignCenter.setName(name);
}
@Override
public void attack() {
foreignCenter.jingong();
}
@Override
public void defense() {
foreignCenter.fangshou();
}
}
测试主类
public class Main {
public static void main(String[] args) {
Player a = new Forwards("巴蒂尔");
a.attack();
Player b = new Guards("麦克格雷迪");
b.attack();
Player c = new Translator("姚明");
c.attack();
c.defense();
}
}
输出结果
巴蒂尔 前锋进攻
麦克格雷迪 后卫进攻
姚明 外籍中锋进攻
姚明 外籍中锋防守