如何创建一个类在模块内并继承另一个类的对象?

时间:2015-01-29 08:21:57

标签: ruby

我想使用类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 

2 个答案:

答案 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