To request the execution of one of these methods, one sends the object a message that names the desired method, providing any additional arguments that the object will need as part of the message. Attempting to send an object a message that does not name one of its methods simply causes an error. The custom is to precede the message names with colons. The Scheme standard does not include objects. However, you can implement an object as a procedure that takes messages as parameters and inspects them before acting on them.
Vectors provide the storage locations that are protected by the procedure.
Both attempts to modify the contents field of sample-box fail. Of course, there is no way for anyone to set the contents of this particular object to anything except zero, so now that the box has been zeroed its contents will remain zero forever. In the preceding examples, we have created only one object of each type, but it is not difficult to write a higher-order constructor procedure that can be called repeatedly, to build and return any number of objects of a given type. This static variable retains its contents unchanged even between calls to the object and independently of calls to any other object of the same type. In all of the preceding examples, the messages received by the object have not included any additional arguments.