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

时间:2011-08-27 09:40:06

标签: c# oop

class A
{
}

class B : A
{
}

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

4 个答案:

答案 0 :(得分:17)

这仅仅是因为继承的工作方式;女人或男人是一个人,并最终在基类Person中添加了性别等其他内容。

如果您声明:

Man m = new Person()

比你没有性别的男人。

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

答案 1 :(得分:7)

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

但是,继承仅在一个方向上起作用,而不是两个方向。类B的对象不能被视为A,因为B 可能(通常会!)包含的功能多于B。或者,换句话说,A更具体,而A a = new B();则更为一般。

因此,您可以B b = new A();而不是{{1}}

答案 2 :(得分:1)

因为B< A,所以它不能创建一个等于B

的新A.

答案 3 :(得分:1)

A是基础,你从A派生B. A就像构建的基础一样,基于你可以建立新楼层的基础。但是使用floor u tant build base。