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

面试题 相关文章推荐
介绍下WebSphere的安全性
Jan 31 面试题
北京银河万佳Java面试题
Mar 21 面试题
联想C++笔试题
Jun 13 面试题
SQL语言面试题
Aug 27 面试题
为数据库创建索引都需要注意些什么
Jul 17 面试题
ORACLE第二个十问
Dec 14 面试题
什么是Connection-oriented Protocol/Connectionless Protocol面向连接的协议/无连接协议
Sep 06 面试题
别名指示符是什么
Oct 08 面试题
C#和SQL Server的面试题
Aug 12 面试题
瀑布模型都有哪些优缺点
Jun 23 面试题
你经历的项目中的SCM配置项主要有哪些?什么是配置项?
Nov 04 面试题
What is EJB
Jul 22 面试题
介绍一下Ruby的多线程处理
Feb 01 #面试题
Ruby如何创建一个线程
Mar 10 #面试题
Ruby如何进行文件操作
Jul 17 #面试题
Ruby如何实现动态方法调用
Nov 18 #面试题
介绍一下Ruby的特点
Jan 20 #面试题
JPA的优势都有哪些
Jul 04 #面试题
J2EE中的容器都包括哪些
Aug 21 #面试题
You might like
印尼林东PWN黄金曼特宁咖啡豆:怎么冲世界上最醇厚的咖啡冲煮教程
2021/03/03 冲泡冲煮
PHP 常见郁闷问题答解
2006/11/25 PHP
两千行代码的PHP学习笔记汇总
2014/10/05 PHP
php使用PDO从数据库表中读取数据的实现方法(必看)
2017/06/02 PHP
用JavaScript 处理 URL 的两个函数代码
2007/08/13 Javascript
纯js实现的论坛常用的运行代码的效果
2008/07/15 Javascript
ext实现完整的登录代码
2008/08/08 Javascript
JS时间选择器 兼容IE6,7,8,9
2012/06/26 Javascript
js限制文本框输入长度两种限制方式(长度、字节数)
2012/12/19 Javascript
Javascript基础教程之比较操作符
2015/01/18 Javascript
Javascript中prototype属性实现给内置对象添加新的方法
2015/05/14 Javascript
详解JavaScript中void语句的使用
2015/06/04 Javascript
javascript框架设计之浏览器的嗅探和特征侦测
2015/06/23 Javascript
JavaScript表单焦点自动切换代码
2016/07/24 Javascript
JavaScript根据json生成html表格的示例代码
2018/10/24 Javascript
JavaScript的变量声明与声明提前用法实例分析
2019/11/26 Javascript
[09:37]DOTA2卡尔工作室 英雄介绍圣堂刺客篇
2013/06/13 DOTA
python paramiko实现ssh远程访问的方法
2013/12/03 Python
详解Django之admin组件的使用和源码剖析
2018/05/04 Python
Django REST Framework序列化外键获取外键的值方法
2019/07/26 Python
python自动生成model文件过程详解
2019/11/02 Python
Python实现元素等待代码实例
2019/11/11 Python
.dcm格式文件软件读取及python处理详解
2020/01/16 Python
keras 权重保存和权重载入方式
2020/05/21 Python
pycharm 的Structure界面设置操作
2021/02/05 Python
CSS3中currentColor关键字的妙用
2016/02/27 HTML / CSS
CSS3 实现穿梭星空动画
2020/11/13 HTML / CSS
FC-Moto瑞典:欧洲最大的摩托车服装和头盔商店之一
2018/11/27 全球购物
护理专业本科生自荐信
2013/10/01 职场文书
经济学博士求职自荐信范文
2013/11/23 职场文书
客服文员岗位职责
2013/11/29 职场文书
拔河比赛口号
2014/06/10 职场文书
安全生产知识竞赛活动总结
2014/07/07 职场文书
检讨书范文2000字
2015/01/28 职场文书
婚庆开业庆典主持词
2015/06/30 职场文书
2015年教师国培感言
2015/08/01 职场文书