解释一下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...

面试题 相关文章推荐
什么是接口(Interface)?
Feb 01 面试题
Java面试题:请问一下代码输出是什么
May 27 面试题
关于Java String的一道面试题
Sep 29 面试题
main 函数执行以前,还会执行什么代码
Apr 17 面试题
如何打印出当前源文件的文件名以及源文件的当前行号
Apr 05 面试题
.net软件工程师面试题
Mar 31 面试题
MIS软件工程师的面试题
Apr 22 面试题
EJB的几种类型
Aug 15 面试题
String s = new String(“xyz”);创建了几个String Object?
Aug 05 面试题
代码中finally中的代码会不会执行
Feb 06 面试题
介绍下java.util.Arrays类
Oct 16 面试题
什么是servlet链?
Jul 13 面试题
介绍一下Ruby的多线程处理
Feb 01 #面试题
Ruby如何创建一个线程
Mar 10 #面试题
Ruby如何进行文件操作
Jul 17 #面试题
Ruby如何实现动态方法调用
Nov 18 #面试题
介绍一下Ruby的特点
Jan 20 #面试题
JPA的优势都有哪些
Jul 04 #面试题
J2EE中的容器都包括哪些
Aug 21 #面试题
You might like
用PHP程序实现支持页面后退的两种方法
2008/06/30 PHP
json的键名为数字时的调用方式(示例代码)
2013/11/15 PHP
PHP随机生成随机个数的字母组合示例
2014/01/14 PHP
php获取本周开始日期和结束日期的方法
2015/03/09 PHP
Yii2 批量插入、更新数据实例
2017/03/15 PHP
PHP 计算两个特别大的整数实例代码
2018/05/07 PHP
Track Image Loading效果代码分析
2007/08/13 Javascript
select组合框option的捕捉实例代码
2008/09/30 Javascript
移动节点的jquery代码
2014/01/13 Javascript
JS的get和set使用示例
2014/02/20 Javascript
同步异步动态引入js文件的几种方法总结
2016/09/23 Javascript
AngularJS  ng-repeat遍历输出的用法
2017/06/19 Javascript
JS设计模式之单例模式(一)
2017/09/29 Javascript
react以create-react-app为基础创建项目
2018/03/14 Javascript
JS中的事件委托实例浅析
2018/03/22 Javascript
Python脚本获取操作系统版本信息
2016/12/17 Python
python使用xslt提取网页数据的方法
2018/02/23 Python
python学生管理系统代码实现
2020/04/05 Python
Python面向对象程序设计之继承与多继承用法分析
2018/07/13 Python
在Python 字典中一键对应多个值的实例
2019/02/03 Python
Pandas之groupby( )用法笔记小结
2019/07/23 Python
django中瀑布流写法实例代码
2019/10/14 Python
python 图像的离散傅立叶变换实例
2020/01/02 Python
PyTorch实现ResNet50、ResNet101和ResNet152示例
2020/01/14 Python
Python paramiko 模块浅谈与SSH主要功能模拟解析
2020/02/29 Python
Django自定义列表 models字段显示方式
2020/04/03 Python
python 中的9个实用技巧,助你提高开发效率
2020/08/30 Python
详解css3 mask遮罩实现一些特效
2018/10/24 HTML / CSS
对于没有初始化的变量的初始值可以作怎样的假定
2014/10/12 面试题
简历中求职的个人自我评价
2013/12/03 职场文书
甜点店创业计划书
2014/01/27 职场文书
高二学年自我鉴定范文(2篇)
2014/09/26 职场文书
打架赔偿协议书范本
2014/10/26 职场文书
学生通报表扬范文
2015/05/04 职场文书
2015年劳动部工作总结
2015/05/23 职场文书
导游词之江西赣州
2019/10/15 职场文书