Ruby类下对访问控制的限制也是用public,protected和private来做的。虽然用的是和C++和Java相同的名字,但是Ruby下的protected和private定义还是有所不同的。
class ClassSuper
attr_accessor :attr1
def initialize
@attr1 = "attr1"
end
private
def privateMethod
puts "this is private"
end
#protected = private which cannot be called directly
protected
def protectedMethod
puts "this is protected"
end
end
class ClassChild < ClassSuper
public
def callProtected
protectedMethod
end
def callPrivate
privateMethod
end
def objProtected obj
obj.protectedMethod
end
#this is invalid
def objPrivate obj
obj.privateMethod
end
end
a = ClassChild.new
puts a.attr1
a.callProtected
a.callPrivate #private method is also inherited
#a.privateMethod #fail
#a.protectedMethod #fail
a.objProtected a
#a.objPrivate a #this is the difference between protected and private
总结一下,Ruby的不同之处在于:
1. 父类的的private和protected都可以被子类所继承
2. protected和private一样不能被显式调用
3. protected和private的区别是protected可以在类的其他方法中以实例形式调用(如: obj.protectedMethod),而private不行
欢迎指正!
分享到:
相关推荐
重点关注private与protected public 默认即为public,全局都可以访问,这个不解释 private C++, “private” 意为 “private to this class”, 但是Ruby中意为 “private to this instance”. 意思是:C++中,对于类...
Ruby类下对访问控制的限制也是用public,protected和private来做的。虽然用的是和C++和Java相同的名字,但是Ruby下的protected和private定义还是有所不同的。
Private private 函数只能 在本类和子类的 上下文中调用,且只能通过self访问。 这个意思就是:private函数,只能在本对象内部访问到。 对象实例变量(@)的访问权限就是 private。 代码如下: class AccessTest def ...
publicsuffix-ruby, 在 public 后缀列表中,基于 ruby的域名解析器 用于 ruby的public 后缀PublicSuffix是一个基于 public 后缀列表的ruby 域 NAME 解析器。 要求ruby> = 2.1对于较老版本的ruby,使用以前的版本。...
7.2方法可见性:PUBLIC、PROTECTED、PRIVATE232 7.3子类化和继承234 7.4对象创建和初始化241 7.5模块247 7.6加载和请求模块252 7.7单键方法和EIGENCLASS257 7.8方法查找258 7.9常量查找261 第8章...
Ruby 方法、类 : Ruby 方法、类 ruby-9-method.mp4 ruby-9-method.mp4
《Ruby程序设计语言》是Ruby的权威指南,全面涵盖该语言的1.8版和1.9版。本书详尽但并不拘泥于语言规范,既适合首次接触Ruby的资深... 语句和控制结构 Method、proc、lambda和closure 类和模块 反射和元编程
pundit, 通过面向对象设计和纯 ruby 类进行最小授权 Pundit Pundit提供了一组帮助器,它指导你利用正则 ruby 类和面向对象设计模式构建一个简单。健壮和可以扩展的。链接:API文档源代码 。行为准则。赞助: 安装gem...
ruby代码ruby代码ruby代码ruby代码ruby代码ruby代码ruby代码ruby代码
ruby-build - 编译和安装Ruby
Clipboard - Ruby访问Windows、Linux、macOS、Java 和Cygwin中剪贴板
action_access, 面向 Ruby on Rails的访问控制系统 操作访问 动作存取为模块,concise concise,真正收费使用访问控制系统的Access 。 它允许安全地保护应用程序和处理权限。关注当前用户可以访问的操作,而不是干扰...
dry_crud 帮你生成简单和可扩展的控制权、视图以及助手类 (Ruby on Rails),用以实现符合DRY(Don't Repeat Yourself)原则的CRU代码。
ncurses-ruby, 用于访问ncurses库的ruby 模块 ncurses红宝石用于访问ncurses库的ruby 模块概述这个自述文件解释了如何使用 ncurses ruby 接口。 假设读者对ncurses库的理解以及如何从C 语言中使用它有一个大致的理解...
ruby语言 远程访问 linux 这是一筐非常巴适的插件,可以通过它使ruby轻松访问linux
ruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ...
RailRoady - Ruby on Rails 3/4 模型和控制器UML类图生成器