为什么我不能从类中访问私有函数?

Suh*_*pta 2 ruby oop private

打印以下代码NoMethodError.我不明白原因.虽然我调用的方法是私有的,但我从类中调用它.不能类var访问它的私有变量/函数?我可以用Java做到这一点.

class Tester
 private
   def func_pri
     puts("From a private function")
   end

 protected 
  def func_prot
    puts("From a protected function")
  end

 public
  def func_pub
     puts("From a public function")
  end

 public
  def caller(object)
    object.func_pub
    object.func_pri # This statement causes error
    object.func_prot
  end
 end

 o = Tester.new
 o.caller(o)
Run Code Online (Sandbox Code Playgroud)

Chr*_*nig 5

您不能在对象上调用私有方法,甚至不能self.删除该object.部分,然后呼叫将继续self.

如果您确实想要调用私有方法,则可以随时使用object.send(:func_pri).

在这些术语中,Ruby与Java等语言完全不同.有关更多信息,您可能需要查看http://www.ruby-doc.org/docs/ProgrammingRuby/,"类,对象和变量"一章,"访问控制"部分