Follow step bye how a method call gets resolved. Example-1
Jump to navigation
Jump to search
Problem. What happens when we send a message to an object? How the system decide what other messages to send?
Solution. In this example we show what happens when we send the message on:
to a PositionableStream class.
- First let's see the code of the method
PositionableStream class >> on: arg1 self basicNew on: arg1
- The first thing that get executed is
self basicNew
self
here is the PositionableStream classbasicNew
is not in its methods so it will be looked into its superclasses methods- who are the superclasses ? these:
PositionableStream class. "=> PositionableStream class " PositionableStream class superclass. "=> Stream class " PositionableStream class superclass superclass. "=> Object class " PositionableStream class superclass superclass superclass. "=> ProtoObject class " PositionableStream class superclass superclass superclass superclass. "=> Class " PositionableStream class superclass superclass superclass superclass superclass. "=> ClassDescription " PositionableStream class superclass superclass superclass superclass superclass superclass. "=> Behavior " PositionableStream class superclass superclass superclass superclass superclass superclass superclass. "=> Object " PositionableStream class superclass superclass superclass superclass superclass superclass superclass superclass. "=> ProtoObject " PositionableStream class superclass superclass superclass superclass superclass superclass superclass superclass superclass. "=> nil "
- Interesting enough at some point we have Behaviour as superclass, NOT Behaviour class !
- Indeed
Behaviour >> basicNew
exists, and it is a primitive. - so
self basicNew
creates a new instance from the PositionableStream class - this is an object PositionableStream and is has the
on:
method.
NM on 14-Aug-2021. This was discussed on the mailing list on 12-Aug-2021 with the help of Gerald Klix.