法本身就无须知晓这个对象的内在属性，直接调用compareTo()方法便可对这些对象进行既定的排序工作。协议是用来描述：如果一个对象是封装良好的，协议很有可能提供了这个对象能够被访问的唯一途径。一些编程语言直接支持协议或者接口 (Objective-C, Java, C#, D, Ada, Logtalk)，而早期的语言可能也有支持接口概念的特性，比如 C++中抽象基类里的纯虚函数，和 Perl里的面向对象特征。请注意，在函数型程序设计和分布式程序设计语言中，也有一个概念叫做协议，但是这里