不存在fly方法，则程式依旧可以通过编译，执行期则抛出异常。此二种风格各有优劣。C++强制要求所有的方法都必须有对应的动作，且编译期绑定使得函数唿叫非常快速。缺点是仅能借由virtual关键字提供有限的动态绑定能力。Objective-C天生即具备鸭子类型之动态绑定能力，因为执行期才处理讯息，允许传送未知讯息给物件。可以送讯息给整个物件集合而不需要一一检查每个物件的型态，也具备消息转送机制。同时空物件nil接受讯息后默认为不做事，所以送讯息给nil也不用担心程序崩溃。
类的定义与