注册 | 登录 忘记密码? 51cto首页 | 博客 | 论坛 | 招聘
热点文章 CCIE-Lab考试将新增10分钟..
 帮助

ruby的类


2008-03-03 17:09:52
 标签:对象 变量   [推送到技术圈]

版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://fsjoy.blog.51cto.com/318484/63970
 创建类
class Song

  def initialize(name, artist, duration)#类似成员方法,初始化实例变量 

  @name=name

  @artist=artist

  @duration=duration

  end

end
 
继承和消息:
class KaraokeSong < Song
   def initialize(name, artist, duration, lyrics) #这个类从Song 继承而来
   super(name,artist, duration) #可以用super 来调用父类的成员方法
   @lyrics=lyrics
   end
end
每个类处理自身实现细节的方法!
对象和属性
attributes!
 
attr_reader+attr_writer=attr_accessor
 
使用:
attr_reader :name, :artist, :duration
虚拟属性:
虚拟属性就是通过原来类中的实例属性变换而来的属性
例如:原来歌曲有持续时间,加入原来规定是以s为单位,现在重新定义一个方法,让原来的持续时间从s变成min,这就是虚拟属性的实质
类变量和类方法:
歌曲具体化为每首不同的歌,对于歌曲来说是一个类,对于具体的歌曲来说,就是类对应的实例,实例有实例方法,例如可以对每个具体的歌曲进行播放..操作,对于歌曲这个类,我们有时候也需要进行操作,譬如计算播放了多少歌曲?这里就需要类变量和类方法来实现了。
类变量以@@开头,并且类变量在使用之前必须进行初始化。
 
 
class Song
  @@play=0
  def initialize(name, artist)
    @name=name
    @artist=artist
    @play=0
  end
  def play
    @play+=1
    @@play+=1
    "this song #@play plays. Total #@@play plays"
  end
end
s1=Song.new("song1","artist1")
s2=Song.new("song2","artist2")
puts s1.play
puts s2.play
puts s1.play
puts s1.play

本文出自 “李骥平” 博客,请务必保留此出处http://fsjoy.blog.51cto.com/318484/63970



上一篇 ruby初级语法知识  下一篇 类方法



    文章评论
 
2008-03-08 10:34:35
把你学习Ruby的文章直接都推送到剥壳圈里,ruby step by step, 加油,小伙子。

 

发表评论

昵   称:
验证码:  点击图片可刷新验证码  博客过2级,无需填写验证码
内   容: