我想使用类B的方法c。对于那个类A继承模块M中的类B.现在,我如何创建类A的对象并调用c?
module M
class A<B
def C
puts "From A"
end
end
class B
def C
puts "From B"
end
end
end
我收到错误&#34;未初始化的常量M :: B(NameError)&#34;
我无法像这样创建对象并调用c:
ob=M::A.new
ob.C
答案 0 :(得分:1)
您要在课程A
之前实现要从B
继承的课程B
。更改此序列,它将起作用:
module M
class B
def c
puts "From B"
end
end
class A < B
def c
puts "From A"
end
end
end
obj = M::A.new
ob.c
# From A
我还纠正了用大写字母命名的方法。这是可能的,但不推荐。
答案 1 :(得分:0)
如果您运行此示例,则会收到以下错误:
NameError: uninitialized constant M::B
因此未找到B
。只要将其添加到代码中,一切正常:
class B
end
module M
class A < B
def c
puts "Test"
end
end
end
ob = M::A.new
ob.c
# >> Test