一个月来,我一直被将基类的链接分配给后代类的链接的问题所困扰。例如
class Person
{
public string Name;
}
class Worker:Person
{
public void Work()
{
Console.WriteLine("Мало денег,надо работать")
}
}
您可以声明一个类对象Person并为其分配一个类对象Worker。
Person Nikita= new Worker();
我们的 Nikita 的功能将被切断,这就引出了一个问题:如果我们可以立即为 Nikita 分配一个类,Person并且理论上我们会得到同样的结果,为什么这在实践中会有用呢?
将派生类对象分配给基类变量是C# 中多态性提供的一个关键功能。当您创建基类变量并将其分配给派生类对象时,您可以通过基类的公共接口来使用这些对象
当您需要处理具有共同属性但方法实现不同的不同对象的集合时,这尤其有用。
在这里,所有对象都存储为 Person 类型,但实际上它们可以是任何 Person 派生类。这使得对象管理和编码变得更加容易。如果需要调用特定于派生类的方法,可以使用类型转换:
因此,功能不会丢失,管理也变得更加灵活。
对于C++ 中的对象切片,仅复制对象的基本部分,而在 C# 中这并不相关,因为类变量存储对对象的引用。所以您不必担心功能被切断。
最简单的情况
...这是当你有许多继承自的类
Person并且它们都是不同的时。但他们仍然Person需要知道每个人的名字:为什么不能有其他方式呢?
例如,如果我们创建一个实例,
Person那么我们将无法像这样使用它Worker:您可以这样做: