2014-01-09 47 views
-2

我有以下两类出错创建继承类的实例

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

您已将此标记为Java问题。这与Java有什么关系? –

+2

是的,但A从B继承?毕竟,你试图将A分配给B。 – Servy

+0

它是'OOP'中的一个通用问题,所以这两种语言都会与它相关 –

回答

3

但是,B类继承了A类

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

1
此使用更有意义的名称,

让我们重新写只是为了清楚起见:(方法是不是这个问题确实有关,我省略了它,)

public class Animal 
{ 
} 

public class Person : Animal 
{ 
} 

Animal animal; 
Person person; 

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

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

+0

+1 ...我还会在样本中使用更传统的'Cat'而不是'Person' ...并非每个人都是动物“有些更好一点:)。 –