Ruby类中的继承

Ruby类中的继承,ruby,inheritance,Ruby,Inheritance,我正在学习ruby类和继承。我只是通过创建从类继承方法的随机类和对象来练习 我想知道是否可以更改一个继承属性?例如,这里的每个对象都继承了一个“标语”方法。如果我希望能够从继承的内容中改变口号,我将如何编写该方法 class Person attr_reader :age attr_accessor :slogan def initialize @age = 0 end def get_older @age = @age += 1 end end

我正在学习ruby类和继承。我只是通过创建从类继承方法的随机类和对象来练习

我想知道是否可以更改一个继承属性?例如,这里的每个对象都继承了一个“标语”方法。如果我希望能够从继承的内容中改变口号,我将如何编写该方法

class Person

  attr_reader :age
  attr_accessor :slogan

  def initialize
    @age = 0
  end

  def get_older
    @age = @age += 1
  end
end

class Student < Person
  def slogan
    "Ruby is cool"
  end
end

class Musician < Person
  def slogan
    "Music is cool"
  end
end

mickey = Student.new
# p mickey.class
# p Student.superclass
p mickey.age
mickey.get_older
p mickey.age
p mickey.slogan

sarah = Musician.new
# p mickey.class
# p Student.superclass
p sarah.age
sarah.get_older
p sarah.age
p sarah.slogan
班级人员
属性读取器:年龄
attr_访问者:标语
def初始化
@年龄=0
结束
变老
@年龄=@age+=1
结束
结束
班级学生<人
def口号
“鲁比很酷”
结束
结束
班级音乐人
def口号
“音乐很酷”
结束
结束
米老鼠=学生
#p米奇班
#学生超类
米老鼠
米奇,变老点
米老鼠
米奇
莎拉=音乐家
#p米奇班
#学生超类
p.sarah年龄
莎拉,变老点
p.sarah年龄
莎拉

如果您希望
标语
可修改,请将其设置为访问者

class Person
  attr_accessor :slogan
end

mickey = Person.new
mickey.slogan = "Yo"
puts mickey.slogan
我们甚至可以有一个默认值

class Person
  attr_accessor :slogan

  def initialize
    self.slogan = "Hello, kind friend :)"
  end
end
请注意,
attr\u accessor
在幕后定义了两个方法
slamon
slamon=
,用于访问实例变量。所以我刚才写的这个类相当于

class Person

  def initialize
    self.slogan = "Hello, kind friend :)"
  end

  def slogan
    @slogan
  end

  def slogan=(value)
    @slogan = value
  end

end

你已经有了,所以我不确定问题是什么
Person.new.slagon\35;=>nil
Student.new.slagon\35;=>“Ruby很酷”
Music.new.slagon\35;=>“音乐很酷”
明白了,这非常有用,非常感谢!