ruby的类

 创建类
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

你可能感兴趣的:(类,变量,对象,职场,休闲)