From: "R. Kumar" Date: 2010-01-31T16:44:36+09:00 Subject: Inheritance related problem Note: this is *not* a ruby bug. its a general query. Perhaps best explained with sample code. #!/usr/bin/env ruby -w class Parent def printa arg puts "inside parent printa #{arg} " printb arg end def printb arg puts "inside parent printb #{arg} " puts "--> #{arg} " end end class Child < Parent def printa arg puts "inside child printa #{arg} reduced 1 " # 1 is actually some other instance level variable super arg-1 end def printb arg puts "inside child printb #{arg} reduced 1" super arg-1 end end if __FILE__ == $0 begin p = Parent.new c = Child.new puts " parent calls with 5 and 6" p.printa 5 #p.printb 6 puts " === child calls with 7 === " c.printa 7 #c.printb 7 ensure end end Class Child extends Parent. It extends 2 methods by modifying the incoming parameter and then calling super. One of these methods printa calls printb. When Parent's printa is called, it calls it own printb. However, when Child's printa is called, it calls Parent's printa, which (in this case) i was hoping would call Parent's printb directly. But it (correctly) calls Child's printa which once again reduces the arg. So my arg gets reduced twice. I suppose i could use some flags to prevent this, But is there any direct way i can coerce Parent printa to call only Parent printb. When you execute the above code, you will see that 7 gets decremented 2 times. Attachments: http://www.ruby-forum.com/attachment/4448/test.rb -- Posted via http://www.ruby-forum.com/.