Que*_*tin 3 ruby inheritance class
我想创建一个基类来处理所有方法.在这种情况下,如何使用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
Run Code Online (Sandbox Code Playgroud)
预期的结果将是"品种良好品种的好狗",谢谢你提前:)
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1697 次 |
| 最近记录: |