假设我们有一个基类和一个从基类继承的类。为什么我们需要把继承人变成基类,抛弃它所有的个性,只保留基本属性。基类允许 Person p Child(继承人) Doctor d
p = d; //我们现在已将子类转变为基类并丢弃其属性。d = (Doctor)p //现在他们已经把他的个人财产归还给他了。目前尚不清楚为什么要这样做。
假设我们有一个基类和一个从基类继承的类。为什么我们需要把继承人变成基类,抛弃它所有的个性,只保留基本属性。基类允许 Person p Child(继承人) Doctor d
p = d; //我们现在已将子类转变为基类并丢弃其属性。d = (Doctor)p //现在他们已经把他的个人财产归还给他了。目前尚不清楚为什么要这样做。
我将 OOP 中的多态性定义为类拥有自己的在基类中定义(声明)的功能实现的能力。
我将摘录 D. Albahari 所著的《C# 9.0。参考。语言的完整描述》一书。
多态性
链接是多态的,即 类型变量
х可以引用子类对象х。例如,考虑以下方法:该方法
Display能够显示Name对象Stock和的属性值House,因为 他们都是Asset:多态性的工作方式是子类 (
Stock和House) 具有其基类 ( ) 的所有特征Asset。然而,相反的说法将不成立。如果一个方法Display被重写以便它接受House,那么你就不能传递它Asset:离我自己更远了。
这是多态性的一个非常重要的例子。类的对象
B可以分配给a类型的变量A,因为它通过继承而A具有其所有属性。但与此同时,它仍然是 类 的对象B,并且通过将方法应用于a,该方法被声明为类型A(它对 一无所知) ,我们在控制台上收到对此的确认。BCon也就是说,多态性允许您以在基类中定义的单一方式处理基类的所有不同后代,同时保留每个对象的个性。
顺便说一句,编程中的另一种多态性是泛化,或类型模板的使用
<T>。但这与OOP无关。