gpt4 book ai didi

ruby - 如何在 ruby​​ 中使基类方法不可重写?

转载 作者:数据小太阳 更新时间:2023-10-29 08:16:57 28 4
gpt4 key购买 nike

我有一些基类 A 有一个不能被覆盖的方法。

class A
def dont_override_me
puts 'class A saying, "Thank you for not overriding me!"'
end
end

还有另一个扩展 A 并尝试重写 dont_override_me 方法的 B 类。

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

这是因为 ruby 的特性。可以理解。

但是,如何强制基类方法 dont_override_me 不能被它的派生类覆盖?我在 ruby​​ 的 java 中找不到像 final 这样的关键字。在 C++ 中,可以将基类方法设为非虚方法,以便派生类无法覆盖它们。我如何在 ruby​​ 中实现这一点?

最佳答案

你可以通过 Hook change 事件并将其改回来做到这一点,但对我来说它似乎有点臭:

http://scie.nti.st/2008/9/17/making-methods-immutable-in-ruby

这是定义 Ruby 的那些东西之一,所以反对它似乎有点毫无意义。如果有人重新定义了一些东西,以至于它可怕地崩溃了..那是他们的问题;-)

关于ruby - 如何在 ruby​​ 中使基类方法不可重写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/708642/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com