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/