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

面试题 相关文章推荐
您熟悉ORM(Object-Relation Mapping)吗?请谈谈您所理解的ORM
Feb 08 面试题
接口中的方法可以是abstract的吗
Jul 23 面试题
JAVA和C++的区别
Oct 06 面试题
武汉英思工程科技有限公司–ORACLE面试测试题目
Apr 30 面试题
杭州-DOTNET笔试题集
Sep 25 面试题
关于Assembly命名空间的三个面试题
Jul 23 面试题
简述网络文件系统NFS,并说明其作用
Oct 19 面试题
internal修饰符起什么作用
Dec 16 面试题
MYSQL支持事务吗
Aug 09 面试题
什么是Web Service?
Jul 25 面试题
Java面试题汇总
Dec 06 面试题
Servlet方面面试题
Sep 28 面试题
介绍一下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面向对象全攻略 (十一)__toString()用法 克隆对象 __call处理调用错误
2009/09/30 PHP
php控制文件下载速度的方法
2015/03/24 PHP
PHP面向对象学习之parent::关键字
2017/01/18 PHP
PHP中的函数声明与使用详解
2017/05/27 PHP
弹出模态框modal的实现方法及实例
2017/09/19 PHP
音乐播放用的的几个函数
2006/09/07 Javascript
用js怎么把&字符换成"&amp:"
2006/10/19 Javascript
Javascript之文件操作
2007/03/07 Javascript
一个用js实现的页内搜索代码
2007/05/23 Javascript
JavaScript 定义function的三种方式小结
2009/10/16 Javascript
js中top、clientTop、scrollTop、offsetTop的区别 文字详细说明版
2011/01/08 Javascript
js切换光标示例代码
2013/10/10 Javascript
对于Form表单reset方法的新认识
2014/03/05 Javascript
浅谈重写window对象的方法
2014/12/29 Javascript
原生js实现键盘控制div移动且解决停顿问题
2016/12/05 Javascript
Vue关于数据绑定出错解决办法
2017/05/15 Javascript
javascript高仿热血传奇游戏实现代码
2018/02/22 Javascript
vue 兄弟组件的信息传递的方法实例详解
2019/08/30 Javascript
[01:12]DOTA2次级职业联赛 - Newbee.Y 战队宣传片
2014/12/01 DOTA
python中黄金分割法实现方法
2015/05/06 Python
Python正则捕获操作示例
2017/08/19 Python
基于Python代码编辑器的选用(详解)
2017/09/13 Python
Django admin实现图书管理系统菜鸟级教程完整实例
2017/12/12 Python
深入了解Python中pop和remove的使用方法
2018/01/09 Python
利用python将pdf输出为txt的实例讲解
2018/04/23 Python
pycharm安装和首次使用教程
2018/08/27 Python
python批量处理文件或文件夹
2020/07/28 Python
NumPy排序的实现
2020/01/21 Python
python 实现ping测试延迟的两种方法
2020/12/10 Python
Wiggle中国:英国骑行、跑步、游泳 & 铁三运动装备专卖网店
2016/08/02 全球购物
四年的个人工作自我评价
2013/12/10 职场文书
投标单位介绍信
2014/01/09 职场文书
党的群众路线对照检查材料范文
2014/09/24 职场文书
成人成长感言如何写?
2019/08/16 职场文书
【海涛dota】偶遇拉娜娅 质量局德鲁伊第一视角解说
2022/04/01 DOTA
如何使用SQL Server语句创建表
2022/04/12 SQL Server