ruby中的访问权限
来源:互联网 发布:sql面试 编辑:程序博客网 时间:2024/06/05 06:26
=begin
在Ruby里,要读取,或是改变对象的属性,唯一的途径是调用对象的方法。
控制了对方法的访问,也就控制了对对象属性的访问。
控制对方法的访问,有三种方式:
访问控制 意义
public 可以被任何实例对象调用,不存在访问控制;
protected 可以被定义它的类和其子类访问,可以在类中或子类中指定给实例对象;
private 可以被定义它的类和其子类访问,不能被实例对象调用。
方法默认都是公有的(initialize方法除外,它永远是私有的)。
=end
class Person
def talk
puts "public :talk,将调用speak"
speak
end
def speak
puts "protected :speak,将调用laugh"
laugh
end
def laugh
puts "private:laugh"
end
protected :speak
private :laugh
end
p1=Person.new
p1.talk
#p1.speak 实例对象不能访问protected方法
#p1.laugh 实例对象不能访问private方法
puts "-----------------------------------------------------"
class Person
def speak
"protected:speak"
end
def laugh
"private:laugh"
end
protected :speak
private :laugh
end
class Student < Person
def useLaugh
puts laugh
end
def useSpeak
puts speak
end
end
p2=Student.new
p2.useLaugh # private:laugh
p2.useSpeak # protected:speak
puts "----------------------------------------------------"
class Person
def speak
"protected:speak "
end
def laugh
"private:laugh"
end
protected :speak
private :laugh
def useLaugh(another)
puts another.laugh #这里错误,私有方法不能指定对象
end
def useSpeak(another)
puts another.speak
end
end
p1=Person.new
p2=Person.new
p2.useSpeak(p1) # protected:speak
#p2.useLaugh(p1)
=begin
从上面三个程序可以得出结论:
public方法,可以被定义它的类和其子类访问,可以被类和子类的实例对
象调用;
protected方法,可以被定义它的类和其子类访问,不能被类和子类的实例
对象直接调用,但是可以在类和子类中指定给实例对象;
private方法,
可以被定义它的类和其子类访问,私有方法不能指定对象。
=end
在Ruby里,要读取,或是改变对象的属性,唯一的途径是调用对象的方法。
控制了对方法的访问,也就控制了对对象属性的访问。
控制对方法的访问,有三种方式:
访问控制 意义
public 可以被任何实例对象调用,不存在访问控制;
protected 可以被定义它的类和其子类访问,可以在类中或子类中指定给实例对象;
private 可以被定义它的类和其子类访问,不能被实例对象调用。
方法默认都是公有的(initialize方法除外,它永远是私有的)。
=end
class Person
def talk
puts "public :talk,将调用speak"
speak
end
def speak
puts "protected :speak,将调用laugh"
laugh
end
def laugh
puts "private:laugh"
end
protected :speak
private :laugh
end
p1=Person.new
p1.talk
#p1.speak 实例对象不能访问protected方法
#p1.laugh 实例对象不能访问private方法
puts "-----------------------------------------------------"
class Person
def speak
"protected:speak"
end
def laugh
"private:laugh"
end
protected :speak
private :laugh
end
class Student < Person
def useLaugh
puts laugh
end
def useSpeak
puts speak
end
end
p2=Student.new
p2.useLaugh # private:laugh
p2.useSpeak # protected:speak
puts "----------------------------------------------------"
class Person
def speak
"protected:speak "
end
def laugh
"private:laugh"
end
protected :speak
private :laugh
def useLaugh(another)
puts another.laugh #这里错误,私有方法不能指定对象
end
def useSpeak(another)
puts another.speak
end
end
p1=Person.new
p2=Person.new
p2.useSpeak(p1) # protected:speak
#p2.useLaugh(p1)
=begin
从上面三个程序可以得出结论:
public方法,可以被定义它的类和其子类访问,可以被类和子类的实例对
象调用;
protected方法,可以被定义它的类和其子类访问,不能被类和子类的实例
对象直接调用,但是可以在类和子类中指定给实例对象;
private方法,
可以被定义它的类和其子类访问,私有方法不能指定对象。
=end
- ruby中的访问权限
- 【Ruby】Ruby和Java比较——方法访问权限
- java中的访问权限
- Java中的访问权限
- java中的访问权限
- Java中的访问权限
- Java中的访问权限
- Java中的访问权限
- java中的访问权限
- java中的访问权限
- java中的访问权限
- java中的访问权限
- JAVA中的访问权限
- Java中的访问权限
- java中的访问权限
- C++中的访问权限
- java中的访问权限
- C++中的控制访问权限
- delete顺序
- 软件开发系列(1)—为什么要推到重来
- ruby的单例方法
- c++数据类型
- VMware vSphere服务器虚拟化实验七 创建和管理虚拟机
- ruby中的访问权限
- 问:怎么回收drop掉一个表的空间
- 12-动画光标(鼠标样式)
- 建立4C标准的电子商务网站
- Linux系统的shell是什么
- 从PowerDesigner概念设计模型(CDM)中的3种实体关系说起
- hadoop的基础学习-map reduce原理(二)
- 培训官赵敏:学员就是我们的产品[摘自上海科技报]
- 13-应用删除线标记商品特价(文字及列表样式)