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? Objectand"hello".kind_of? Objectreturntruebecause"hello"is aStringandStringis a subclass ofObject.- However
"hello".instance_of? Objectreturnsfalse.