繁体   English   中英

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

[英]Why cannot a derived class refer the base class?

class A
{
}

class B : A
{
}

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

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

如果你声明:

Man m = new Person()

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

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM