C# 创建继承类的实例时出错
我有以下两门课C# 创建继承类的实例时出错,c#,oop,overriding,C#,Oop,Overriding,我有以下两门课 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; } } 我在main类中编写以下代码 A m
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;
}
}
我在main类中编写以下代码
A myobj1;
B myobj2;
myobj1 = new B();
myobj2 = new A();
为什么第二个对象给我的错误是不能隐式地将类型'ClassLibrary3.A'转换为'ClassLibrary3.B'。存在显式转换(是否缺少转换?
但是B类
继承a类
但是,类B继承类A
这意味着所有的B
s都是A
s.这并不意味着所有的
A
s都是B
s。为了清晰起见,让我们用更有意义的名称来重新编写这篇文章:(这个方法与这个问题并不相关,我省略了它,)
人是动物。动物不是人。您已将此标记为Java问题。这与Java有什么关系?是的,但是A从B继承吗?毕竟,您正在尝试将A分配给B。这是
OOP
中的一个通用问题,因此这两种语言都与它相关+1。。。另外,在示例中,我会使用更传统的Cat
而不是Person
。。。并不是每个人都是动物,有些人更善良:)。
public class Animal
{
}
public class Person : Animal
{
}
Animal animal;
Person person;
animal = new Person();
person = new Animal();