组合转发练习

public abstract class AbstractGun {
	private String name;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	
	public abstract void shoot();

	@Override
	public String toString() {
		return "AbstractGun [name=" + name + "]";
	}
}

/**
 * 转发类
 * 
 * @author none
 *
 */
public abstract class AbstractToy extends AbstractGun{
	private AbstractGun toyGun;
	
	
	public AbstractToy(AbstractGun toyGun) {
		this.toyGun = toyGun;
	}
	
	@Override
	public String getName() {
		return toyGun.getName();
	}

	@Override
	public void setName(String name) {
		toyGun.setName(name);
	}

	@Override
	public void shoot() {
		System.out.println("射击不是重点....不用刻意实现");
	}

	@Override
	public String toString() {
		return toyGun.toString();
	}
	
}

实现类:

public class AK extends AbstractGun{

	@Override
	public void shoot() {
		System.out.println("AK射击........");
	}
}
public class ToyAK extends AbstractToy{

	public ToyAK(AbstractGun toyGun) {
		super(toyGun);
	}
}


测试:

public static void main(String[] args) {
		
		AbstractGun ak = new AK();
		ak.setName("AK");
		ak.shoot();
		System.out.println(ak);
		
		AbstractToy toyAk = new ToyAK(ak);
		toyAk.setName("toyAk");
		toyAk.shoot();
		System.out.println(toyAk);
	}

结果:

AK射击........
AbstractGun [name=AK]
射击不是重点....不用刻意实现
AbstractGun [name=toyAk]

猜你喜欢

转载自blog.csdn.net/perfect_red/article/details/80629730