解释一下ruby中的特殊方法与特殊类


Posted in 面试题 onFebruary 26, 2013
特殊方法是指某实例所特有的方法。一个对象有哪些行为由对向所属的类决定,但是有时候,一些特殊的对象有何其他对象不一样的行为,在多数程序设计语言中,例如C++和Java,我们必须定义一个新类,但在Ruby中,我们可以定义只从属于某个特定对象的方法,这种方法我们成为特殊方法(Singleton Method)。

class SingletonTest
def info
puts “This is This is SingletonTest method”
end
end

obj1 = SingletonTest.new
obj2 = SingletonTest.new

def obj2.info
puts “This is obj2″
end

obj1.info
obj2.info

执行结果为:
This is This is SingletonTest method
This is obj2

有时候,我们需要给一个对象定义一系列的特殊方法,如果按照前面的方法,那么只能一个一个定义:

def obj2.singleton_method1
end

def obj2.singleton_method2
end

def obj2.singleton_method3
end
……
def obj2.singleton_methodn
end

这样做非常繁复麻烦,而且无法给出一个统一的概念模型,因此Ruby提供了另外一种方法,
class ……
end

obj是一个具体的对象实例,class
class SingletonTest
def meth1
puts “This is meth1″
end

def meth2
puts “This is meth2″
end
end

obj1 = SingletonTest.new
obj2 = SingletonTest.new

class def meth1
puts “This is obj2′s meth1″
end

def meth2
puts “This is obj2′s meth2″
end
end

obj1.meth1
obj1.meth2
obj2.meth1
obj2.meth2

执行结果为:
This is meth1
This is meth2
This is obj2′s meth1
This is obj2′s meth2

Tags in this post...

面试题 相关文章推荐
康拓普公司Java笔面试
Sep 23 面试题
一套Java笔试题
Aug 20 面试题
C++面试题:关于链表和指针
Jun 05 面试题
什么是Oracle的后台进程background processes?都有哪些后台进程?
Apr 26 面试题
存储过程和函数的区别
May 28 面试题
用友笔试题目
Oct 25 面试题
Internet体系结构
Dec 21 面试题
华三通信H3C面试题
May 15 面试题
C#软件工程师英语面试题
Jun 07 面试题
Shell编程面试题
May 29 面试题
说说在weblogic中开发消息Bean时的persistent与non-persisten的差别
Apr 07 面试题
Prototype如何实现页面局部定时刷新
Aug 06 面试题
介绍一下Ruby的多线程处理
Feb 01 #面试题
Ruby如何创建一个线程
Mar 10 #面试题
Ruby如何进行文件操作
Jul 17 #面试题
Ruby如何实现动态方法调用
Nov 18 #面试题
介绍一下Ruby的特点
Jan 20 #面试题
JPA的优势都有哪些
Jul 04 #面试题
J2EE中的容器都包括哪些
Aug 21 #面试题
You might like
星际争霸 Starcraft 秘技补丁
2020/03/14 星际争霸
测试php函数的方法
2013/11/13 PHP
php计算数组相同值出现次数的代码(array_count_values)
2015/01/20 PHP
PHP+swoole实现简单多人在线聊天群发
2016/01/19 PHP
Yii视图CGridView实现操作按钮定义地址示例
2016/07/14 PHP
PHP与JavaScript针对Cookie的读写、交互操作方法详解
2017/08/07 PHP
javascript  Error 对象 错误处理
2008/05/18 Javascript
DD_belatedPNG,IE6下PNG透明解决方案(国外)
2010/12/06 Javascript
最短的javascript:地址栏载入脚本代码
2011/10/13 Javascript
js 可拖动列表实现代码
2011/12/13 Javascript
js跨域访问示例(客户端/服务端)
2014/05/19 Javascript
JavaScript淡入淡出渐变简单实例
2015/08/06 Javascript
javascript封装简单实现方法
2015/08/11 Javascript
jquery实现图片轮播器
2017/05/23 jQuery
JS按条件 serialize() 对应标签的使用方法
2017/07/24 Javascript
vue mounted组件的使用
2018/06/18 Javascript
微信小程序通过一个json实现分享朋友圈图片
2019/09/03 Javascript
vue实现Input输入框模糊查询方法
2021/01/29 Javascript
Python __setattr__、 __getattr__、 __delattr__、__call__用法示例
2015/03/06 Python
wxPython使用系统剪切板的方法
2015/06/16 Python
Python中的with语句与上下文管理器学习总结
2016/06/28 Python
使用 Python 实现微信公众号粉丝迁移流程
2018/01/03 Python
Python利用matplotlib.pyplot绘图时如何设置坐标轴刻度
2018/04/09 Python
Python HTML解析器BeautifulSoup用法实例详解【爬虫解析器】
2019/04/05 Python
Django框架自定义模型管理器与元选项用法分析
2019/07/22 Python
python的time模块和datetime模块实例解析
2019/11/29 Python
雅诗兰黛加拿大官网:Estee Lauder加拿大
2019/07/31 全球购物
简述你对Statement,PreparedStatement,CallableStatement的理解
2013/03/25 面试题
大学生个人自我鉴定
2013/12/03 职场文书
车间组长岗位职责
2013/12/20 职场文书
大学生实习证明范文(5篇)
2014/09/18 职场文书
环卫工作汇报材料
2014/10/28 职场文书
小学运动会通讯稿
2015/07/18 职场文书
mysql查询的控制语句图文详解
2021/04/11 MySQL
教你使用Python pypinyin库实现汉字转拼音
2021/05/27 Python
SpringBoot中获取profile的方法详解
2022/04/08 Java/Android