有人能用简单的语言提供一个例子吗?
谢谢
有人能用简单的语言提供一个例子吗?
谢谢
类(Class)是根据该类的特定实现而创建一个或多个对象的蓝图。这好比切出黄油饼干的模具,模具的属性(形状、大小、高度)定义了可以用它切出的饼干。您只有一个模具(类),但可以用它创建许多饼干(该类的实例,即对象)。所有饼干都基于特定的模具。同样地,所有作为该类实例的对象在其属性方面都是相同的。
类 = 数据(data)和方法(methods)(特殊函数),全部复杂地捆绑在一起。
类定义它们的内部内容(数据)是什么+它们可以执行什么样的工作(方法)。内容基于保存各种数字类型、字符串、常数和其他更复杂内容的变量以及块代码组成的方法(当执行时)使用各种数据执行一些计算操作。
类中定义的所有方法都有其定义-定义方法的名称+该方法处理哪些数据(如果有)以及该方法将哪些数据(如果有)传递给其他人进行处理。类中定义的所有方法也都有实现-提供处理的实际代码-它是方法的内部工作。在其中有处理数据的代码,也可以请求其他方法对子数据进行子处理。因此,类是编程中非常高妙的类型。
如果您理解上述内容,您将了解什么是协议。
协议是一个或多个方法声明的集合,该集合具有名称并表示协议。我说声明,因为共同由特定协议定义的方法没有任何实现代码定义。唯一存在的是它们声明的名称。在类中,您不仅定义该类具有哪些方法,还定义了如何完成该工作。但是,在协议中的方法没有任何实现。
让我们再用一个现实生活的比喻来帮助理解。如果你来我家住一周,你需要遵守我的整洁协议。整洁协议包括三个方法-每天洗碗、打扫房间和通风换气。这三个方法,是我定义的...你需要执行它们。但我并不关心实现的细节应该是什么样子的,我只是名义上定义了这些方法。你会实现它们,也就是说你会定义这些工作(这些方法)的细节。我只要求你遵守我的协议,并按照你认为合适的方式来实施它。
结局 - 你可以声明一个类,也可以单独声明一个协议。你可以声明,这个类除了自己的方法外,还将采用或遵守该协议,即该类将实现该协议的方法。
-tableView:willBeginEditingRowAtIndexPath:
和-tableView:heightForRowAtIndexPath:
这样的方法,而无需了解数据源的其他信息。协议类似于Java和其他语言中的接口。可以将其视为描述其他类同意实现的接口的合同。它可以定义实现类将实现的必需和可选方法列表。与类不同,它不提供这些方法的自己的实现。
http://iosdevelopertips.com/objective-c/the-basics-of-protocols-and-delegates.html
“读代码胜过千言万语 ;-)”与其他语言相比,差异略小。接口(相当于Java/C++类)定义对象的数据布局,并可以定义它们的某些子集方法(当然也可以定义整个集合)。协议仅定义一些子集方法,没有数据定义。
值得注意的是,接口只能继承自另一个接口(当然,该接口可以继承自继承自继承自...的接口),但接口可以实现任意数量的协议。因此,两个不同的接口(除了NSObject之外)都可以实现相同的协议,从而“证明”它们提供相同的功能。(虽然在Objective-C中,您可以通过一些技巧调用未在接口声明或协议中外部声明的接口方法,因此协议在某种程度上只是“语法糖”或类似的东西。)
协议定义了一个类可以做什么,就像 Java 或 c# 中的接口。
类是实际执行任务的实现。
够简单吧? :)