At 6:13 PM +0000 2/7/03, Graham Barr wrote:
On Fri, Feb 07, 2003 at 09:39:14AM -0800, Dan Sugalski wrote:
It's a little more confusing that that. When I said only one foo
method, it was in contrast to attributes, where an attribute of a
particular name may appear in an object multiple times--since
attributes are class-private, each class in an object's inheritance
hierarchy can safely have an attribute named "foo".
Methods and properties, being global, override each other--a child
class' foo overrides its parent's foo. If the child's foo has
multiple definitions based on signature, or we have foo that crosses
class lines, then the multiple dispatch logic comes online and does
its Weird Magic.
Rereading that, it still doesn't make much sense, but there you go... :)
Just to confuse things more, there is a question I have reguarding
multi-methods and inheritance.
Consider class A defines foo() as a multi-method with 3 different signatures
If class B then sub-classes A and defines a method foo() does it
1 override all foo() methods in A
2 get added to the foo() methods in the dispatch, so we now have
a multi-method with 4 signatures
3 override only the method in A that has the same signature
My guess would be (1) and that multi-method distpatch would
only happen if B called ->SUPER::foo
In which case you could consider that there is only one method
named foo(). That method does the dispatch to the others.
D'oh! That's a good question--I'll ask in a few minutes and find out.
--
Dan
--------------------------------------"it's like this"-------------------
Dan Sugalski even samurai
[EMAIL PROTECTED] have teddy bears and even
teddy bears get drunk