创建继承类的实例时出错

时间:2014-01-09 17:44:16

标签: c# oop override

我有以下两个类

 public class A
 {
     public virtual decimal Sum(int x, int y)
     {
          return x+y;
     }
  }

 public class B : A
 {
      public override decimal Sum(int x, int y)
      {
           return x+y+1;
      }
 }

我在主类

中编写以下代码
  A myobj1;
  B myobj2;

  myobj1 = new B();
  myobj2 = new A();

为什么第二个对象会给我Cannot implicitly convert type 'ClassLibrary3.A' to 'ClassLibrary3.B'. An explicit conversion exists (are you missing a cast?)的错误,class B继承class A

2 个答案:

答案 0 :(得分:3)

  

但是B类继承了A类

这意味着所有B都是A s 这并不意味着所有A都是B s。

答案 1 :(得分:1)

为了清楚起见,让我们使用更有意义的名称重写这个:(该方法与此问题并不相关,我省略了它),< / p>

public class Animal
{
}

public class Person : Animal
{
}

Animal animal;
Person person;

animal = new Person();
person = new Animal();

这个人是动物。动物不是一个人。