help on inheritance and class methods pls?

B

Barbara Mcinnes

Hi there,

Hoping someone explain this to me as I'd like to understand it properly.
I've been reading about Ruby's metaclasses, but I don't get this:

class Test
def foo
puts "in foo"
end
end
=> nil

class Test2 < Test
def self.bar
foo
end
def method_missing(name, *args)
puts "in method_missing"
end
end
=> nil
Test2.new.bar
in method_missing
=> nil
Test2.new.foo
in foo
=> nil

why does invoking method bar on the instance find class Test2's
method_missing instance method, but not instance method foo inherited
from class Test?

Thanks for any help!
 
D

David A. Black

Hi --

Hi there,

Hoping someone explain this to me as I'd like to understand it properly.
I've been reading about Ruby's metaclasses, but I don't get this:

class Test
def foo
puts "in foo"
end
end
=> nil

class Test2 < Test
def self.bar
foo
end
def method_missing(name, *args)
puts "in method_missing"
end
end
=> nil

in method_missing
=> nil
in foo
=> nil

why does invoking method bar on the instance find class Test2's
method_missing instance method, but not instance method foo inherited
from class Test?

You've got a class method Test2.bar, but you never call it. (The
program would run the same if you deleted that method.) When you send
the message 'bar' to your instance of Test2, it hits method_missing
because there's no instance method bar in Test2 or any of its
ancestors.


David

--
Rails training from David A. Black and Ruby Power and Light:
Intro to Ruby on Rails January 12-15 Fort Lauderdale, FL
Advancing with Rails January 19-22 Fort Lauderdale, FL *
* Co-taught with Patrick Ewing!
See http://www.rubypal.com for details and updates!
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,054
Latest member
TrimKetoBoost

Latest Threads

Top