球员抽象类
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 ( ) ;
}
}
输出结果
巴蒂尔 前锋进攻
麦克格雷迪 后卫进攻
姚明 外籍中锋进攻
姚明 外籍中锋防守