Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么派生类不能引用基类?_C#_Oop - Fatal编程技术网

C# 为什么派生类不能引用基类?

C# 为什么派生类不能引用基类?,c#,oop,C#,Oop,我知道bb=newa()是不可能的,但它背后的解释是什么?这仅仅是因为继承的工作方式;一个女人或一个男人就是一个人,最终会给这个基本阶层的人增加一些别的东西,比如性别 如果您声明: class A { } class B : A { } 而不是一个没有性别的男人 另一种方法是有效的,因为每个人也是一个人;-) 通过从A派生,可以指定B的实例不仅是B,它们也是A。这是在OOP中调用的。继承的力量在于能够将一般属性/行为抽象为一个公共类,然后从中派生出专门的类。专用类可以更改现有功能(称为重写)

我知道
bb=newa()是不可能的,但它背后的解释是什么?

这仅仅是因为继承的工作方式;一个女人或一个男人就是一个人,最终会给这个基本阶层的人增加一些别的东西,比如性别

如果您声明:

class A
{
}

class B : A
{
}
而不是一个没有性别的男人


另一种方法是有效的,因为每个人也是一个人;-)

通过从
A
派生,可以指定
B
的实例不仅是
B
,它们也是
A
。这是在OOP中调用的。继承的力量在于能够将一般属性/行为抽象为一个公共类,然后从中派生出专门的类。专用类可以更改现有功能(称为重写)或添加新功能

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


因此,您可以执行
aaa=newb()但不是
B=新的A()

因为BA是一个基,你从A派生出B。 A就像是建筑的基础,基于基础你们可以建造新的楼层。但是使用地板你不能建立基础

Man m = new Person()