浏览 503 次
|
锁定老贴子 主题:ruby的method作用域
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2007-05-29
ruby的method作用域和Java一样,修饰词都有private,protected和public。其中public的含义都是一样的,但是private和protected却完全不一样。这一点在《Programming ruby》当中语焉不详。今天看了《ruby for rails》第7章才搞明白了。
一、Java当中的含义: private在Java当中的含义是只在当前类范围之内可以调用,当前类的子类也无法访问; protected在Java当中的含义是在当前类以及子类当中可以调用,其他类无法访问; 二、Ruby当中的含义: private在某种程度上相当于Java当中的protected,当前类以及子类都可以调用,其他类无法访问,但也有点不同,即private方法只能被当前对象隐式调用(self.),不能被显式调用,换句话说,就是private方法不能跨同一个类的不同实例来调用; protected稍微宽泛一点,指可以调用同一个类别的其他实例方法,也就是说,protected方法可以显式调用(obj.),例如:
class C
def initialize(name)
@name = name
end
def compare(c)
c.name == @name
end
protected
def name
@name
end
end
class D < C
end
d1 = D.new("fankai")
d2 = D.new("hello")
puts d1.compare(d2)
在类别C当中使用c.name,如果name方法是private的话,只能使用 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |



