class A
{
}
class B : A
{
}
我知道
B b = new A();
是不可能的,但是这背后的解释是什么呢?这是因为继承的工作原理;一个女人或男人都是一个人,最终在基类中添加了一些其他属性,如性别。
如果您声明:
Man m = new Person()
那么你得到的是一个没有性别的人。
另一种方式可行,因为每个男人也都是一个人;-)
A
,您指定B
的实例不仅是B
,还是A
。这在面向对象编程中称为继承。继承的优势在于能够将一般属性/行为抽象到一个公共类中,然后从中派生专门的类。专门的类可以更改现有功能(称为覆盖)或添加新功能。A
的对象视为B
,因为B
可能(并经常如此!)包含比A
更多的功能。换句话说,B
更具体而A
更一般。A a = new B();
,但不能执行B b = new A();
。A是一个基础,你从A派生出B。 A就像建筑的基础一样,基于基础你可以建造新的楼层。但是使用楼层你无法建造基础。