How can I get child to ignore what its parent thinks is fun and go straight to the grandparent’s idea of fun?
Child still inherits from the parent, but it just doesn’t agree with a couple methods.
Calling the method of the super class of the super class?
Also, is it considered poor design if I’m in a situation where the child doesn’t agree with its parents but agrees with the parent’s parents?
class Grandparent
def fun
#do stuff
end
end
class Parent < Grandparent
def fun
super
#parent does some stuff
end
def new_business
#unrelated to my parent
end
end
class Child < Parent
def fun
super
#child also does some stuff
end
def inherit_new_business
new_business
#stuff
end
end
It’s generally easier in Ruby to get this kind of behavior through composition rather than inheritance. To accomplish that
Modulesare included that contain the specific behaviors you wish a class to have.But if you absolutely have to use inheritance you can do this:
This will do exactly what it says. Grab the instance method
funfrom the GrandParent class, attach it to the current instance objectselfand call it.