У меня есть некоторый базовый класс A с методом, который нельзя переопределять.
class A
def dont_override_me
puts 'class A saying, "Thank you for not overriding me!"'
end
end
И еще один класс B, который расширяет A и пытается переопределить метод dont_override_me
.
class B < A
def dont_override_me
puts 'class B saying, "This is my implementation!"'
end
end
Если я создаю экземпляр B и вызываю dont_override_me
, будет вызван метод экземпляра класса B.
b = B.new
b.dont_override_me # => class B saying, "This is my implementation!"
Это из-за свойств рубина. Понятный.
Однако, как заставить метод базового класса dont_override_me
не быть переопределенным его производными классами? Я не смог найти ключевое слово типа final
в java для ruby. В C ++ методы базового класса могут быть сделаны не виртуальными, так что они становятся не перекрываемыми производными классами. Как мне добиться этого в ruby?