表示歌曲的Ruby类,歌曲(名字,演唱者,时长)

在Ruby程序中,initialize是一个特殊的方法。

当调用Song.new创建一个新的Song对象时,Ruby首先分配一些内存来保存未初始化的对象,然后调用对象的initialize方法,并把调用new时所使用的参数传入该方法。

每个对象都表示自己对应的歌曲,因此需要每个Song对象带有自己的歌曲名,演唱者和时长,所以需要将这些值作为实例变量保存在对象中。

对象内的所有方法都可以访问实例变量,每个对象都有实例变量的一份拷贝。

class Song

def initialize(name, artist, duration)            #接收3个参数,参数以小写字母开头

@name      = name                                  #实例变量由@符开头的名字,参数name被赋值给实例变量@name

@artist      = artist

@duration  = duration

end

end

song = Song.new(“love”, "nikey”, 250)

song.inspect                 -->#<Song:0x3067054 @artist="nikey", @duration=250, @name="love">

inspect方法:可以发送给任何对象,默认将对象的ID和实例变量格式化。

标准消息to_s: 可以发送给任何一个想要输出字符串表示的对象。

song = Song.new("love", "nikey", 250)

puts song.to_s            --> #<Song:0x326705c>,只报告了对象的ID

Override Song类中的to_s方法:

class Song

def initialize(name, artist, duration)

@name     = name

@artist     = artist

@duration = duration

end

def to_s

"Song: #@name -- #@artist (#@duration)"                     -- 使用#字符将3个实例变量的值插入到字符串中。

end

end

song = Song.new("love", "nikey", 250)
puts song.to_s                                                                 -- 结果:Song: love -- nikey (250)

在Ruby中,类永远都不是封闭的,总可以向一个已有的类中添加方法。适用于自己编写的类,同样适用于标准的内建类。

转载于:https://www.cnblogs.com/nikeylee/articles/1722745.html

04/28/2010 类,对象,变量相关推荐

  1. python定义方法继承类_Python类的定义、继承及类对象使用方法简明教程

    Python编程中类的概念可以比作是某种类型集合的描述,如"人类"可以被看作一个类,然后用人类这个类定义出每个具体的人--你.我.他等作为其对象.类还拥有属性和功能,属性即类本身的 ...

  2. python定义一个人类_Python类的定义、继承及类对象使用方法简明教程

    Python编程中类的概念可以比作是某种类型集合的描述,如"人类"可以被看作一个类,然后用人类这个类定义出每个具体的人--你.我.他等作为其对象.类还拥有属性和功能,属性即类本身的 ...

  3. 【IOS 开发】Object - C 面向对象 - 类 , 对象 , 成员变量 , 成员方法

    . 一. 类定义 类定义需要实现两部分 : -- 接口部分 : 定义类的成员变量和方法, 方法是抽象的, 在头文件中定义; -- 实现部分 : 引入接口部分的头文件, 实现抽象方法; 1. 接口部分定 ...

  4. C++ 笔记(18)— 类和对象(this 指针、指向类的指针、类静态成员变量和函数)

    1. this 指针 在 C++ 中,每一个对象都能通过 this 指针来访问自己的地址. this 指针是所有成员函数的隐含参数.因此,在成员函数内部,它可以用来指向调用对象. 友元函数没有 thi ...

  5. python 私有和保护成员变量如何实现?—— 单下划线 开始的成员变量叫做保护变量,意思是只有类实例和子类实例能访问到这些变量; 双下划线 开始的是私有成员,意思是只有类对象自己能访问...

    默认情况下,Python中的成员函数和成员变量都是公开的(public),在python中没有类似public,private等关键词来修饰成员函数和成员变量. 在python中定义私有变量只需要在变 ...

  6. 【C++】38.类成员变量声明为 对象与指针的区别

    在我们平时写代码或阅读代码时,经常会看到,某个类A中需要使用另一个类B的方法.那么下面会看到两种用法: 一种是直接定义一个B类对象. 一种是在类A中定义一个B类指针: 如: // 头文件 std::s ...

  7. python创建变量_Python每天一分钟:给类对象动态新增/删除成员变量和方法(函数)...

    一般类对象新增变量或方法的过程 在面向对象(OOP)的编程方法中,如果需要给实例化的类对象新增方法或者属性,一般都是在class类的定义中新增内容,然后才能用类对象来调用新增的方法或变量.如在C++中 ...

  8. c/c++教程 - 2.4.2.7~8 类对象作为类成员,static静态成员变量函数

    目录 4.2.7 类对象作为类成员 4.2.8 静态成员 相关教程 4.2.7 类对象作为类成员 C++类中的成员可以是另一个类的对象,我们称该成员为 对象成员. 例如: class A {} cla ...

  9. 看完这篇你还敢说分不清 Java 类 对象 实例 变量间的区别?

    看完这篇你还敢说分不清 Java 类 对象 实例 变量间的区别? 什么是类? 什么是对象? 什么是变量? 对象和类的关系: Java中的类: Java中的对象 Java中的变量 Java 中调用 对象 ...

最新文章

  1. 服务器php将视频转为m3u8,php应用ffmpeg对mp4文件转换并生成m3u8视频流文件
  2. day16 递归函数
  3. SVN迁移到Git的过程(+ 一些技巧)
  4. c++经典书籍--Effective C++
  5. 方案解析:纸张计数精准测量出200张纸?!第1名妥妥的
  6. 有意思:textarea resize属性下纯CSS交互效果
  7. redis集群出现JedisNoReachableClusterNodeException异常(No reachable node in cluster)
  8. 【数据结构笔记】Leetcode:718. 最长重复子数组(动态规划)
  9. github中markdown语言的使用规则
  10. 剑指offer系列之五十四:按之字形顺序打印二叉树
  11. 移动App后台Java开发银联支付后台接口
  12. 内存超频时序怎么调_憋了很久的问题:内存时序有什么用?超频时怎么调?
  13. dreamweaver cs6 连接mysql_dreamweaver cs6连接数据库的具体流程讲述
  14. 【Tensorflow】报错:FailedPreconditionError: Attempting to use uninitialized value keep_prob_7
  15. Yii2中如何使用CodeCeption
  16. 宇视摄像机/硬盘录像机等设备接入到国标GB28181协议视频平台EasyGBS的注意事项
  17. win10+cpu+caffe搭建
  18. 什么样的程序员才能算是一个合格的程序员呢?
  19. 最小计算机主板,主板板型有哪几种?大主板和小主板的区别在哪?
  20. java 等待池,Java等待池中的所有线程

热门文章

  1. 怎么在java上运行服务器,用java做了一个简单的定时任务工程,不知道如何让它在服务器上运行起来?应该怎样做???...
  2. 计算机vfp考试题库二级,XYZ计算机等级考试题库系统(二级VFP)
  3. python学习-装饰器(可变参装饰器、完善装饰器)
  4. android 多手指触摸屏,AIR Android:关于多点触摸
  5. java 中的servlet_java中的Servlet
  6. epp是什么意思_有效的个人生产力(EPP)——助力洁绿形成组织发展合力
  7. java netty socket_Java-彻底弄懂netty-原来netty是这样启动的-知识铺
  8. 《c语言从入门到精通》看书笔记——第13章 预处理
  9. java能过吗_java – 你能通过例子解释AspectJ的cFlow(P u00...
  10. 逻辑java练习_逻辑结构常见练习 Java_Note