[英]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中称为继承 。 继承的力量在于能够将一般属性/行为抽象为公共类,然后从中派生专门的类。 专用类可以更改现有功能(称为覆盖)或添加新功能。
但是,继承仅在一个方向上起作用,而不是两个方向。 A
类A
对象不能被视为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.