Use of Super Keyword and Mixins In Ruby
Super Keyword
Ruby gives us with a built-in function called super that allows us to call methods which are present in its super class.
The use of inheritance is to make the overridden methods in a subclass do something additional to what the method in the super class did. This allows us to modify the needs of the subclass.
class Animal
def speak
"Hello!"
end
end
class GoodDog < Animal
def speak
super + " from GoodDog class"
end
end
sparky = GoodDog.new
sparky.speak
#Output => "Hello! from GoodDog class"
Mixins
In object-oriented programming languages, when a class can inherit all the functions and features of more than one parent class or we can say that if a child class has more than one parent class then this feature is called multiple inheritance, but ruby doesn't support multiple inheritance but mixins eliminate the need of having multiple inheritance. So basically mixin is a class that contains methods which can be used by other classes without having to be the parent class of those other classes.
module Walkable
def walk
"I'm walking!"
end
end
class Animal; end
class Fish < Animal
end
class Mammal < Animal
end
class Cat < Mammal
include Walkable # mixing in Walkable module
end
class Dog < Mammal
include Walkable # mixing in Walkable module
end
And now Cat and Dog objects can walk, but objects of other classes won't be able to:
tommy = Dog.new
tuna = Fish.new
tiny = Cat.new
tommy.walk # => I'm walking!
tiny.walk # => I'm walking!
tuna.walk # => NoMethodError: undefined method `walk' for #<Cat:0x007fc453152308>
In this example, we have created a anAnimal class with a instance method named walk. After that we have created dog and cat methods which are inheriting the Animal class also with a walk instance method to override the inherited method.
However, in the subclass' walk method we use super to invoke the walk method from the superclass, Animal, and then we increase the functionality by adding some more text data to it.
2 Comment(s)