That is, there is no distinction between user and system methods. Now we can add spreads to the bagels and start tasting them. If we have bagels that aren't topped, as well as bagels that are, we may want to make toppable bagels a separate class. Let explore inheritance with these two classes, starting by making a new class SpreadableBagel that inherits from Bagel . More options on the info method let us determine that SpreadableBagel does indeed inherit from Bagel , and further that it also inherits from Object .
Object embodies the basic functionality of all objects, from which new classes inherit by default.
First, you might be wondering why all methods except create are called by using their name after the object name, as the second argument. The answer is that create is called as part of the system's unknown mechanism if no other method can be found. This is done to provide the familiar widget-like creation syntax, but you may call create explicitly if you prefer. This initialization functionality is provided by the init instproc on the Object class, and is why the Bagel init instproc calls next . Once you understand this relationship, you will realize that there is nothing special about object creation.