class A
{
}
class B : A
{
}
我知道B b = new A();
是不可能的,但背后的解释是什么?
答案 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。