use*_*377 0 ruby inheritance class
我很高兴知道为什么"Cat"下面的实例也没有将"This animal can:"文本放在其特定的实例属性之前.我期待这样的输出:
This animal can:
Say it's name: 'Rover'
Bark
This animal can:
Say its name: 'Satan'
Meow
Run Code Online (Sandbox Code Playgroud)
这是代码:
class Animal
puts "This animal can:"
end
class Dog < Animal
def initialize(name)
@name = name
puts "Say its @name: '%s'" % [name]
end
def bark
puts "Bark"
end
end
class Cat < Animal
def initialize(name)
@name = name
puts "Say its @name: '%s'" % [name]
end
def meow
puts "Meow"
end
end
rover = Dog.new("Rover").bark
satan = Cat.new("Satan").meow
Run Code Online (Sandbox Code Playgroud)
我所看到的是这个:
This animal can:
Say it's name: 'Rover'
Bark
Say its name: 'Satan'
Meow
Run Code Online (Sandbox Code Playgroud)
是不是"cat"也继承了Animal班级?它的输出也不应该以"This animal can:"?
您的代码中的问题是:
puts "This animal can:"
Run Code Online (Sandbox Code Playgroud)
在定义Animal类时运行.看起来你想在初始化器中使用它:
class Animal
def initialize(name)
puts "This animal can:"
end
end
Run Code Online (Sandbox Code Playgroud)
然后,您需要super在其他初始化程序中调用您期望的结果.