Ruby类中的继承
我正在学习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
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;=>“音乐很酷”
明白了,这非常有用,非常感谢!