oop/public_visibility.rb

tests/_examples/oop/public_visibility.rb in the metorex repository.

class Ancestor
  private

  def redefined_later
    :before
  end
end

class Descendant < Ancestor
  public :redefined_later
end

class Ancestor
  def redefined_later
    :after
  end
end

puts Descendant.new.redefined_later.inspect
puts Descendant.public_instance_methods(false).inspect

class SameVisibility < Ancestor
  public :redefined_later
end
puts SameVisibility.public_instance_methods(false).inspect

class Toggling < Ancestor
  private :redefined_later
  public :redefined_later
end
puts Toggling.public_instance_methods(false).inspect
puts Toggling.private_instance_methods(false).inspect

Output:

:after
[:redefined_later]
[]
[:redefined_later]
[]