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

面试题 相关文章推荐
普天C++笔试题
Mar 20 面试题
在SQL Server中创建数据库主要有那种方式
Sep 10 面试题
杭州-飞时达软件有限公司.net笔面试
Apr 28 面试题
西安众合通用.net笔试题
Mar 18 面试题
如何选择使用结构还是类
May 30 面试题
C#怎么让一个窗口居中显示?
Oct 20 面试题
什么是用户模式(User Mode)与内核模式(Kernel Mode) ?
Sep 07 面试题
init进程的作用
Aug 20 面试题
Java基础面试题
Jul 19 面试题
什么时候用assert
May 08 面试题
静态变量和实例变量的区别
Jul 07 面试题
95%的面试官都会问到的50道Java线程题,附答案
Aug 03 面试题
介绍一下Ruby的多线程处理
Feb 01 #面试题
Ruby如何创建一个线程
Mar 10 #面试题
Ruby如何进行文件操作
Jul 17 #面试题
Ruby如何实现动态方法调用
Nov 18 #面试题
介绍一下Ruby的特点
Jan 20 #面试题
JPA的优势都有哪些
Jul 04 #面试题
J2EE中的容器都包括哪些
Aug 21 #面试题
You might like
农民C键的运用技巧
2020/03/04 星际争霸
php比较多维数组中值的大小排序实现代码
2012/09/08 PHP
php笔记之:AOP的应用
2013/04/24 PHP
轻松掌握php设计模式之访问者模式
2016/09/23 PHP
PHP文件操作实例总结
2016/09/27 PHP
使用Git实现Laravel项目的自动化部署
2019/11/24 PHP
JavaScript 拖拉缩放效果
2008/12/10 Javascript
学习ExtJS(一) 之基础前提
2009/10/07 Javascript
关于ExtJS4.1:快捷键支持的问题
2013/04/24 Javascript
jquery 漂亮的删除确认和提交无刷新删除示例
2013/11/13 Javascript
javascript发送短信验证码实现代码
2015/11/12 Javascript
学习JavaScript设计模式之代理模式
2016/01/12 Javascript
[原创]Javascript 实现广告后加载 可加载百度谷歌联盟广告
2016/05/11 Javascript
总结Javascript中的隐式类型转换
2016/08/24 Javascript
JavaScript 事件对内存和性能的影响
2017/01/22 Javascript
微信小程序页面传值实例分析
2017/04/19 Javascript
vue实现组件之间传值功能示例
2018/07/13 Javascript
NodeJS实现同步的方法
2019/03/02 NodeJs
基于layPage插件实现两种分页方式浅析
2019/07/27 Javascript
vue实现标签云效果的方法详解
2019/08/28 Javascript
Layui数据表格判断编辑输入的值,是否为我需要的类型详解
2019/10/26 Javascript
vue点击按钮实现简单页面的切换
2020/09/08 Javascript
用vue写一个日历
2020/11/02 Javascript
给Python初学者的一些编程技巧
2015/04/03 Python
Python常见数据结构之栈与队列用法示例
2019/01/14 Python
Tensorflow实现神经网络拟合线性回归
2019/07/19 Python
opencv调整图像亮度对比度的示例代码
2019/09/27 Python
Python 中如何实现参数化测试的方法示例
2019/12/10 Python
Python通过yagmail实现发送邮件代码解析
2020/10/27 Python
如何用python实现一个HTTP连接池
2021/01/14 Python
深入浅析css3 border-image边框图像详解
2015/11/24 HTML / CSS
叙述DBMS对数据控制功能有哪些
2016/06/12 面试题
init进程的作用
2012/04/12 面试题
网络教育自我鉴定
2014/02/04 职场文书
2015上半年个人工作总结
2015/07/27 职场文书
python缺失值填充方法示例代码
2022/12/24 Python