Интересно ... Я не знал, что Actionscript использовал слово «родитель» таким образом.
Здесь работают две отдельные концепции: наследование и композиция. Термин parent
используется в обоих случаях в Objective-C и во многих других объектно-ориентированных языках.
В Objective-C класс, который наследуется от другого, ссылается на этот «другой» класс как своего предка. В то время как многие люди используют термин superclass
, на самом деле вы можете вполне законно использовать слово parent
. Как видно из названия, это объект "наследования".
Объект «композиция», с другой стороны, это то, что вы описали на примере автомобиля и колеса. Автомобиль состоит из нескольких других объектов, одним или несколькими из которых является колесо. Я должен признать, я не часто слышал термин parent
, используемый в этом контексте для обозначения автомобиля. Обычно вы, вероятно, обнаружите, что большинство людей в мире Objective-C узнают car
по метке «контейнер». Однако в случае древовидной структуры данных, такой как документ XML, мы часто говорим о родительских узлах и дочерних узлах. Родитель содержит дочерние элементы, поэтому использование слова «родитель» в композиционных отношениях также целесообразно в зависимости от типа отношений. Я не думаю, что вы найдете многих программистов Objective-C, использующих слово «родитель» в сценариях композиции вне древовидной структуры.
Различие часто сравнивают с отношением «имеет» и «является»: идентичность против обладания. В наследовании дочерний объект является «подтипом» своего родителя. В композиции, с другой стороны, автомобиль "имеет" колесо, или родительский узел в дереве "имеет" коллекцию дочерних узлов.
Редактировать: Кендалл Хельмштеттер-Гелнер ниже добавил несколько хороших комментариев по части вашего вопроса, касающейся случаев и передачи ссылок. Если у вас есть определенный блок кода и конкретное сообщение об ошибке, пожалуйста, не стесняйтесь обновить свой вопрос с ними, и мы постараемся помочь.