Inheritance and Lookup
2: Lookup
Damien Cassou, Stéphane Ducasse and Luc Fabresse
http://stephane.ducasse.free.fr
Goal
- Understanding
- message sending
- method lookup
- semantics of
self
Inheritance
- Inheritance of state is static
- Inheritance of behavior is dynamic
Message Sending
Sending a message is a two-step process:
- look up the method matching the message
- execute this method on the receiver
Method Lookup
The lookup starts in the class of the receiver then:
- if the method is defined in the class, it is returned
- otherwise the search continues in the superclass
Some Lookup Cases
Sending the message color
to aColoredRectangle
Some Lookup Cases
Sending the message area
to aColoredRectangle
self Always Represents the Receiver
A new foo
> ...
B new foo
> ...
self Always Represents the Receiver
A new foo
> 10
B new foo
> 50
What is self/this?
Take 5 min and write the definition of self
(this
in Java).
- your definition should have two points:
- what does
self
represent?
- how is a method looked up when a message is sent to
self
?
self/this
self
represents the receiver of the message
self
in Pharo, this
in Java
- The method lookup starts in the class of the receiver
self Always Represents the Receiver
A new bar
> ...
B new bar
> ...
self Always Represents the Receiver
A new bar
> 10
B new bar
> 50
self Always Represents the Receiver
B new bar
> 50
Evaluation of aB bar
aB
's class is B
- no method
bar
in B
- look up in
A
- bar
is found
- method
bar
is executed
self
refers to the receiver aB
foo
is sent to self
- look up
foo
in the aB
's class: B
foo
is found there and executed
self Always Represents the Receiver
A new bar
> ...
B new bar
> ...
C new bar
> ...
self Always Represents the Receiver
A new bar
> 10
B new bar
> 10
C new bar
> 50
What You Should Know
self
always represents the receiver
- Sending a message is a two-step process:
- Look up the method matching the message
- Execute this method on the receiver
- Method lookup maps a message to a method
- Method lookup starts in the class of the receiver
- ...and goes up in the hierarchy
/