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`三种访问控制级别,分别对应不同的可见性和使用场景。本文将重点讨论`private`和`protected`两种访问控制修饰符,并通过示例代码来深入...
Private private 函数只能 在本类和子类的 上下文中调用,且只能通过self访问。 这个意思就是:private函数,只能在本对象内部访问到。 对象实例变量(@)的访问权限就是 private。 代码如下: class AccessTest def ...
如果在一个类中定义了多个方法,然后使用`private`,那么从`private`之后的所有方法都会变成私有,直到遇到另一个访问修饰符(如`public`或`protected`)为止。 私有方法在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默认不强制访问控制,但可以通过`public`、`protected`、`private`等关键字实现对方法和变量的访问控制。 **5. 模块(Module)** 模块是Ruby中的另一个重要概念,主要用于组织代码和提供...
类有继承、模块(module)的引入以实现多重继承的效果,以及访问控制符(public、private、protected)。 6. **异常处理**:Ruby提供了try-catch机制,通过`begin-rescue-end`来处理程序运行时可能出现的错误。 7....
- **访问控制**: 如何在Ruby中使用public、protected和private关键字来控制类成员的访问权限。 - **变量**: 包括实例变量、类变量、全局变量等不同类型的变量。 ##### 3. 容器、块和迭代器 - **容器(Container)**: ...
- **访问控制**:Ruby支持三种不同级别的访问控制:公共(`public`)、受保护(`protected`)和私有(`private`)。 ##### 4. 单例方法 - **定义**:单例方法是在特定对象实例上定义的方法,而不是在类级别定义的...
- 封装:通过访问控制符(public, private, protected)实现数据封装,保护内部状态不被外部直接修改。 - 多态:不同类的对象可以响应相同的消息,实现代码的复用和扩展。 2. **基本语法** - 变量:Ruby有局部...
- **访问控制**: Ruby提供了public、private和protected等关键字来控制成员的可见性。 - **变量类型**: 包括局部变量、实例变量、类变量和全局变量。 #### 六、容器、块与迭代器 - **容器**: 包括数组和哈希等数据...
- 封装:Ruby中可以通过访问控制符(public、private、protected)来管理对象内部数据的可见性。 3. **模块(Module)** - 模块是用来封装代码的机制,可以包含常量、方法和类定义,通过`include`或`extend`...
此外,还可能探讨到访问权限(public, private, protected)在属性访问中的应用,以及如何在不破坏封装性的前提下,实现属性的动态修改。 在实际解压并查看源代码时,你会看到类定义、方法定义以及可能的测试用例。...
- **封装**:通过访问控制修饰符(public、protected、private)来保护内部状态。 - **模块与混入**:模块用于封装一组相关的类和方法,可以被其他类通过混入的方式使用。 #### 四、常用库与框架 - **标准库**:...
- Ruby提供了不同的访问级别来控制类内部数据的访问权限,包括public、protected和private。 **3.7 元类** - 元类是创建类的类,可以用来定制类的行为。 - 在Ruby中,每个类都有一个隐式的元类。 **3.8 变量** - *...