我想创建一个基类来处理所有方法。在这种情况下,如何使用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
预期结果将是品种良好品种的好狗#34; 提前谢谢你:)
答案 0 :(得分:5)
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
答案 1 :(得分:2)
self.class.first_name
表示Lab.first_name
,而不是Lab的实例lb.first_name