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 selfhere is the PositionableStream classbasicNewis 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 >> basicNewexists, and it is a primitive. - so
self basicNewcreates 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.