ruby中访问控制public、protected、private详解

上一篇 / 下一篇  2012-11-02 18:36:50 / 个人分类:ruby


1、总结
public:默认类型,可以被定义它的类和其子类访问,可以被类和子类的实例对象调用
protected:可以被定义它的类和其子类访问,不能被类和子类的实例对象直接调用
private:可以被定义它的类和其子类访问,不能被类和子类的实例对象直接调用

2、使用方法
1)在方法前使用
private
def mtd
  ...
end
2)在方法后使用
def mtd
  ...
end
private :mtd

3、示例
#定义父类
class Animal
  attr_accessor :name
 def initialize(name)
    @name = "name"
  end 
  def eat
    puts "eating"
  end
  def run
    puts "running"
  end
  private :eat
  protected :run
end 
#定义子类
class Cat<Animal
  def subeat 
    puts eat  #子类可以访问private的方法
  end
  def subrun
    puts run  #子类可以访问protected的方法
  end
end

animal = Animal.new("aaa")
animal.eat  #类的实例无法访问private的方法
animal.run  #类的实例无法访问protected的方法
cat = Cat.new("sss")
cat.eat   #子类的实例无法访问private的方法
cat.run   #子类的实例无法访问protected的方法
cat.subeat  
cat.subrun

输出结果:
eating
nil    
running
nil

TAG: Private public Ruby ruby protected private

 

评分:0

我来说两句

Open Toolbar