Search code examples
rubyinheritanceintrospection

Ruby: kind_of? vs. instance_of? vs. is_a?


What is the difference? When should I use which? Why are there so many of them?


Solution

  • kind_of? and is_a? are synonymous.

    instance_of? is different from the other two in that it only returns true if the object is an instance of that exact class, not a subclass.

    Example:

    • "hello".is_a? Object and "hello".kind_of? Object return true because "hello" is a String and String is a subclass of Object.
    • However "hello".instance_of? Object returns false.