• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Ruby 之 class 中的 private、 protected、public

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

Private

     private权限的函数只能在本对象的成员函数中访问到。也就是这个函数只是这个对象的实现细节

对象实例变量(@instance_attribute)的访问权限就是 private。

class A

   private
    def test_access

      @instance_attribute = "instance_attribute";
      return "test access right" 
    end 
  end

class B < A

   def test

       puts test_access;

       puts @instance_attribute;

   end

   def test_other(a)

       a.test_access

   end

end 
B.new.test          # =>  test access right

                         # =>  instance_attribute

  p A.new.test_private    #错误test.rb:20: private method `test_access' called for #<A:0x3fd9064> (NoMethodError)

B.new.test_other(A.new) #错误test.rb:18: in `test_other': private method `test_access' called for #<A:0x4198850> (NoMethodError) from test.rb:24

 

Protected

     protected 权限的函数只能在被本类或子类的 上下文中调用,但可以使用 other_object.function的形式。

这个的关键是可以调用 本类的其它对象的protected函数。

  # Now make 'test' protect

  class B
      protected    :test_access
  end

  p A.new.test_access            # 错误 private method 'test_access'
  B.new.test                          # test access right

  p B.new.test_other(B.new)   # test access right

  p B.new.test_other(A.new)  # 错误 private method 'test_access'

 

Public

     public 函数可以在任何地方调用。成员函数和常量的默认访问权限就是public。

 

总结:

     public, protected, private 效果上像是触发器,调用了一次,就改变了后续类成员的访问权限,这个和C++中情况很像。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Ruby线程(一)发布时间:2022-07-14
下一篇:
一步一步学Ruby(十):Ruby正则表达式(下)发布时间:2022-07-14
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap