我有以下两个类
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
答案 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();
这个人是动物。动物不是一个人。