谁能帮我看一下这个ruby类

[复制链接]
查看11 | 回复3 | 2011-1-28 15:00:11 | 显示全部楼层 |阅读模式
class Test
def method1
#默认为公有方法

end
protected#保护方法
def method2

end

private#私有方法
def method3
end
public
def test_protected(arg) #arg是Test类的对象
arg.method2 #正确,可以访问同类其他对象的保护方法
end
def test_private(arg) #arg是Test类的对象
arg.method3######错误,不能访问同类其他对象的私有方法
end
end
为什么说arg.method3是被其他对象调用,是被哪个对象调用了?新手,请高手帮下忙。
arg本身就是Test的一个类,我不明白的是如果private不能被本类对象调用,那他的作用是什么?

回复

使用道具 举报

千问 | 2011-1-28 15:00:11 | 显示全部楼层
private 方法不能有接受方即通过 对象名.方法名 来调用私有方法是行不通的,不过可以在Test类或其子类的方法中调用该私有方法(直接写方法名才行)如:class Test
def method1
#默认为公有方法

end
protected#保护方法
def method2

end
private#私有方法
def method3
endendclass Mytest < Testdef test_private()method3 #正确,可以访问父类对象的私有方法
回复

使用道具 举报

千问 | 2011-1-28 15:00:11 | 显示全部楼层
不能被本类对象调用,但可以被本类调用,就是被private修饰的方法只能被本类中的方法调用被protected 修饰的方法可以被本类调用也可以被实例化的对象调用,不能被其他类调用
回复

使用道具 举报

千问 | 2011-1-28 15:00:11 | 显示全部楼层
另外一个Test对象(也可以是同一个),
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行