功能扩展用「组合」,规范制定用「继承」(最好的选择当然是abstract class)。具体地说,如果前者使用「继承」,其目的是在父类的功能基础上,提供“新的”功能。而后者的「继承」,则是为了“必须实现”父类所规定的功能。后者才是“多态”的用武之地,即:提供规范所规定的功能,但却有不同的实现。而不是,在已有的feature下,提供新的feature。提供新的功能,请选择「组合」。