Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c OOP:我什么时候应该子类化,什么时候应该<;包括>;_Objective C_Oop - Fatal编程技术网

Objective c OOP:我什么时候应该子类化,什么时候应该<;包括>;

Objective c OOP:我什么时候应该子类化,什么时候应该<;包括>;,objective-c,oop,Objective C,Oop,我想知道什么时候我应该子类,我应该包括,让我解释一下为什么: 我看到,无论何时包含一个类,都可以访问它的方法,例如,如果我创建了一个新类,它是NSObject的子类,我仍然可以通过包含NSString.h来访问NSString及其方法 我还了解到,当您创建一个属于另一个类的子类的类时,您还可以访问它的方法 因此,作为Objective-C的初学者,我不知道什么时候应该使用第一个,什么时候应该使用第二个?只要有一个类完成了您希望它完成的任务,您就可以使用它。例如,这就是使用NSString所要

我想知道什么时候我应该子类,我应该包括,让我解释一下为什么:

  • 我看到,无论何时包含一个类,都可以访问它的方法,例如,如果我创建了一个新类,它是NSObject的子类,我仍然可以通过包含NSString.h来访问NSString及其方法
  • 我还了解到,当您创建一个属于另一个类的子类的类时,您还可以访问它的方法

因此,作为Objective-C的初学者,我不知道什么时候应该使用第一个,什么时候应该使用第二个?

只要有一个类完成了您希望它完成的任务,您就可以使用它。例如,这就是使用NSString所要做的

当您需要一个与任何现有类无关的新类时,您可以将NSObject子类化。由于NSObject是Objective-C中所有内容的子类,许多人不会将其视为“子类化”,而是将其视为创建一个新类


当您需要一个现有类的修改版本的类时,您可以对该类进行子类化。然而,Objective-C为您提供了一些避免子类化的工具,您不应该创建子类,除非您真的必须这样做。例如,您可以在不创建子类的情况下向现有类添加方法甚至实例变量,并且许多类可以通过使用委托对象进行配置

子类化是一种面向对象的编程技术,用于创建继承超类型行为的现有类型的子类型
#include
是一个编译器指令,用于替换指定文件的内容。除了必须包含声明类的文件以对其进行子类化之外,这两者之间几乎没有什么关系


这个问题有点像“我应该在什么时候建造一个狗舍,什么时候应该用锤子?”< /P>这不是一个客观的C++问题,它是一个基本的面向对象编程(OOP)问题。谢谢你的回答,所以。。。总结一下您所说的:我应该简单地导入并尽可能避免子类?例如,如果我创建了一个做数学的类,另一个做几何的类,因为我需要几何中的一些数学函数,我应该创建我的几何类作为我的数学类的子类,还是应该简单地将我的数学类包含在我的几何类中?你说“NSObject是Objective-C中所有内容的子类”。这不是真的<代码> NSObjult/Cord>是Objtovi.C中的(几乎)所有的根类。它可以帮助您阅读:这在部分类中解释,并查看基础框架参考。当添加到项目中时,您可以访问代码和自己的类中需要使用的许多类。例如,这意味着您可以访问NSString类,而无需直接将其包含在内。好的,谢谢,有一点我完全不明白:如果我需要#包含以创建子类,创建子类的意义到底是什么,因为我甚至不需要访问其他类,因为我已经包含了它?你是如何从他说的话中得到“如果我需要#包含以创建子类”的?哈哈。他们之间真的没有任何关系,他就是这么说的。@TrevörAnneDenise:你不能创建一个子类来访问另一个类。您可以创建一个子类来添加更专门的行为。