class Main
def say_hello
puts "Hello"
end
private
def say_hi
puts "hi"
end
end
class SubMain < Main
def say_hello
puts "Testing #{say_hi}"
end
end
test = SubMain.new
test.say_hello()
输出:
嗨
测试
不同之处在于,在 ruby 中,您可以隐式但不能显式调用子类中的私有方法。 protected 可以用两种方式调用。至于为什么?我想你得问 Matz。
示例:
class TestMain
protected
def say_hola
puts "hola"
end
def say_ni_hao
puts "ni hao"
end
private
def say_hi
puts "hi"
end
def say_bonjour
puts "bonjour"
end
end
class SubMain < TestMain
def say_hellos
# works - protected/implicit
say_hola
# works - protected/explicit
self.say_ni_hao
# works - private/implicit
say_hi
# fails - private/explicit
self.say_bonjour
end
end
test = SubMain.new
test.say_hellos()
我强烈支持 CodeCrack,当我发现这个“私有”并不是真正的“私有”时,我感到非常惊讶。
我大约一年前开始使用 Ruby。在此之前,我几乎使用过所有其他 OOP 语言。 Ruby 最令人恼火的地方是它太“随机设计”和太多“基于意见”,而不是像 C++ 和 Python 那样尝试标准化,有原则可循,你不应该期待意外。 Ruby 完全相反,我认为这就是它更难维护的原因。我时不时地必须环顾四周,找出奇怪的语法的真正含义(就像许多符号表达式一样)。
我们真正应该问的一个问题是:为什么会这样?它试图用这种方式解决什么样的问题?
缺点对我来说很明显:现在我必须学习“隐式”和“显式”的含义。
无论如何,语言是一种工具,应该易于使用和易于维护。我不认为 Ruby 会走这条路。
我个人不向其他人推荐 Ruby。应该尽快扔掉。