接口用来定义两个对象通信的契约;抽象类用来封装对象间公用的行为。 二者在设计起初的目标完全不同,可惜在实际应用中被太多的人误解。 使用接口比较呆板,毕竟继承的是无法撤销的契约。 抽象类就比较灵活了,但是过度的virtual方法会影响效率。