描述
如果有一个条件表达式,根据对象类型的不同而选择不同的行为 可以将这个条件表达式的每个分支放进一个子类内的覆写函数中,然后将原始函数声明为抽象函数
double getSpeed(){
switch (_type){
case EURAPEAN:
return getBaseSpeed();
case AFRICAN:
return getBaseSpeed() - getLoadFactor() * _numberOfCocounts;
case NORWEGION_BLUE:
return (_isNailed) ? 0 : getBasedSpeed(_voltage);
}
}
复制代码
动机
如果需要根据对象的不同类型而采取不同的行为,多态使我们可以不用编写明显的条件表达式
正因为有了多态:“类型码的switch语句” 以及“ 基于类型名称的if-else” 语句 在面向对象中很少出现。