我想创建一个基类来处理所有方法。在这种情况下,我如何使用 ruby 实现这一点?
class Dog
def initialize
@breed = "good breed"
end
def show_dog
puts "#{self.class.first_name} of breed #{@breed}"
end
end
class Lab < Dog
attr_reader :first_name
def initialize
@first_name = "good dog"
end
end
lb = Lab.new()
lb.show_dog
预期结果将是“good dog of breed good breed” 提前谢谢你:)
最佳答案
self.class.first_name
没有做您可能想做的事情。你需要直接使用@first_name
。子类需要调用父类的构造函数;它不会自动调用。
这个有效:
class Dog
def initialize
@breed = "good breed"
end
def show_dog
puts "#{@first_name} of breed #{@breed}" ### <- Changed
end
end
class Lab < Dog
attr_reader :first_name
def initialize
super ### <- Added
@first_name = "good dog"
end
end
lb = Lab.new()
lb.show_dog
关于ruby - 如何让子类变量回到ruby中的父类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15678995/