我正在尝试按如下方式进行继承程序:
class P1
end
class P2
end
class A < P1
end
class A < P2
end
当我运行此程序时,我收到如下错误:
superclass mismatch for class A (TypeError)
如何解决此错误?
答案 0 :(得分:6)
在定义类时,默认情况下会继承Object
。如果您将其作为任何其他类的子类,那么它将继承该其他类。但是,只有在您首次使用关键字class
或方法Class::new
定义自定义类时,才能执行此子类化。一旦你定义了它,当你第二次重新打开你的课程时,你就不会被允许改变它的超级课程。
在你的例子中:
# here you are defining your new class A, so you can make it now a subclass of
# the parent class of any, like P1
class A < P1
end
# here you are reopeing the same class A. Now you are not again allowed to change the
# super class of it, which is P1.
class A < P2
end
您可以做的是,制作P1
和P2
模块,然后在程序过程中随时在A
内包含。