# -*- coding: utf-8 -*-
=begin
Ruby提供了3种限制层级(仅针对方法,变量不是通过此方式)
public =>将方法公开为外部可以使用的实例方法:
private =>将方法限制为只有内部可以使用(不允许接在接受者后面调用)
protected =>将方法限制为只有内部可以使用。另外,在同一个类中可以作为实例方法使用。
=end
class AccTest
def pub
# self.priv # => error
priv
self.proc
puts "pub is a public method."
end
public :pub # 将pub方法设定为public(不指定意义也一样)
def priv
puts "priv is a private method."
end
private :priv # 将priv方法设定为private
def proc # 将proc方法设定为protected
puts "proc is a protected method."
end
protected :proc
end
acc_test = AccTest.new
acc_test.pub # => priv is a private method.
# proc is a protected method.
# pub is a public method.
# acc_test.proc # eror
# -*- coding: utf-8 -*-
=begin
此文件定义了同时对方法做相同的限制访问
没有特别指定的方法都是public, 单initialize方法是例外,它会恒为private
protected 则可以从同一个类(与其子类)中以实例方法的方式调用,但无法从其他地方调用
=end
class AccTest
public # 没有指定实参的话
# 下面定义的所有方法都是public
def pub
puts "pub is a public method."
end
private # 下面定义的所有方法都是private
def priv
puts "priv is a private method."
end
end