🔍目的
允许派生组件从与派生类型兼容的基本组件继承某些功能。
🔍解释
真实世界例子
对于正在策划赛事的综合格斗推广活动来说,确保在相同重量级的运动员之间组织比赛至关重要。这样可以防止体型明显不同的拳手之间的不匹配,例如重量级拳手与雏量级拳手的对决。
通俗描述
使类型中的某些方法接受特定于其子类型的参数。
维基百科
奇异递归模板模式(curiously recurring template pattern,CRTP)是C++模板编程时的一种惯用法:其中类X派生自使用X本身作为模板参数的类模板实例化。
程序实例
定义一个通用接口Fighter
public interface Fighter<T> {
void fight(T t);
}
定义MmaFighter类用于实例化按重量级别区分的拳手
public class MmaFighter<T extends MmaFighter<T>> implements Fighter<T> {
private final String name;
private final String surname;
private final String nickName;
private final String speciality;
public MmaFighter(String