假设我有一个名为 Item 的类。它是 NewsItem 和 TwitterItem 的超类。
如果我想创建一些 NewsItem,我必须使用(在构造函数内)
self = [super init];
如果是,为什么?在 Java/C# 中我会这样做,
NewsItem n = new NewsItem();
我不需要对 Java/C# 中的超类做任何事情。就是抓不住。
在 Java 和 C# 中,如果您没有显式调用构造函数,编译器会自动让您的构造函数调用超类构造函数。例如,“Java 教程”是这样说的 http://docs.oracle.com/javase/tutorial/java/IandI/super.html:
如果构造函数没有显式调用超类构造函数,Java 编译器会自动插入对超类的无参数构造函数的调用。如果超类没有无参构造函数,您将收到编译时错误。 Object 确实有这样的构造函数,因此如果 Object 是唯一的超类,则没有问题。
在 Objective-C 中,编译器不会自动执行此操作,因此您必须自己执行此操作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)