为什么派生类不能引用基类?

Ris*_*hri 4 c# oop

class A
{
}

class B : A
{
}
Run Code Online (Sandbox Code Playgroud)

我知道这B b = new A();是不可能的,但背后的解释是什么?

Dav*_*ras 17

这只是因为继承的方式; 女人或男人是一个人,并最终在基类人物中添加了性别等其他东西.

如果你声明:

Man m = new Person()
Run Code Online (Sandbox Code Playgroud)

比你有一个没有性别的男人.

另一种方式是有效的,因为每个人也是一个人;-)


小智 7

通过从派生A,你指定的实例B不仅B,他们A也.这在OOP中称为继承.继承的力量在于能够将一般属性/行为抽象为公共类,然后从中派生专门的类.专用类可以更改现有功能(称为覆盖)或添加新功能.

但是,继承仅在一个方向上起作用,而不是两个方向.类的对象A不能被视为B因为B 可能(并且经常!)包含的功能比A.或者,换句话说,B更具体而A更通用.

因此,你可以这样做A a = new B();但不能B b = new A();