Страницы

Поиск по вопросам

понедельник, 1 октября 2018 г.

Чем отличается экземпляр класса от объекта класса?

Чем отличается экземпляр класса от объекта класса в objective-c? Задали такой вопрос на собеседовании, я в недоумении ответил "Не понимаю вопроса, разве это не одно и то же?". Просьба сильно не пинать, обж-си учил сам, в ускоренном темпе, и времени разбираться с самой концепцией не было.


Ответ

Я думаю, Вы попали под раздачу из-за недостаточной квалификации собеседующего… если заниматься прямым переводом терминов, то можно много интересного узнать :).
В документации по Obj-C используются термины class object и class instance. Если их дословно перевести на русский, то получится как раз то, о чём Вас спрашивали. Причём в русском языке естественно объект класса считать его экземпляром. В то время, как совершено очевидно, что означает английский термин class object — этот объект, в котором хранится, так сказать, информация о классе.
Class Objects A class definition contains various kinds of information, much of it about instances of the class: The name of the class and its superclass A template describing a set of instance variables The declarations of method names and their return and argument types The method implementations This information is compiled and recorded in data structures made available to the runtime system. The compiler creates just one object, a class object, to represent the class. The class object has access to all the information about the class, which means mainly information about what instances of the class are like. It’s able to produce new instances according to the plan put forward in the class definition. Although a class object keeps the prototype of a class instance, it’s not an instance itself. It has no instance variables of its own and it can’t perform methods intended for instances of the class. However, a class definition can include methods intended specifically for the class object—class methods as opposed to instance methods. A class object inherits class methods from the classes above it in the hierarchy, just as instances inherit instance methods.

Комментариев нет:

Отправить комментарий