class A
{
}

class B : A
{
}

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

最佳答案

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

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

因此,您可以执行 A a = new B(); 但不能执行 B b = new A();

关于c# - 为什么派生类不能引用基类?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7213717/

10-09 18:20
查看更多