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"]