Public_methods vs methods

Why?

class X
def self.yeah; ‘yeah’; end
end

X.public_methods(false)
=> [“yaml_tag_subclasses?”, “yeah”, “superclass”, “to_yaml”,
“allocate”, “new”]

X.methods(false)
=> [“yeah”]