C# 类教程-多态性

  • C# 类教程-类
  • C# 类教程-类成员:字段(域)、属性、索引
  • C# 类教程-类成员:方法、事件
  • C# 类教程-类成员:运算符重载与索引器
  • C# 类教程-类成员:构造函数和析构函数
  • C# 类教程-类成员:嵌套类型
  • C# 类教程-访问修饰符与可访问性级别
  • C# 类教程-继承
  • C# 类教程-继承:方法重载
  • C# 类教程-继承:隐藏(new)
  • C# 类教程-继承:重写(virtual 与 override)
  • C# 类教程-继承:抽象(abstract)
  • C# 类教程-多态性

一般我们指的多态性是指“运行时的多态性”,也就是在程序运行时,系统根据不同的对象确定调用对象所属类的相应方法的能力。

示例

运行结果是:

我们可以看到,derivedClass 与 baseClass 类型不同,但是指向的都是 new DerivedClass():

  • 他们在调用 GetStringVirtual() 时,使用的都是派生类的。(多态性)
  • 他们在调用 GetString() 时,使用的是各自类型所在的方法。

从这里我们可以看出重写与隐藏的区别了。

再看一道多态的题:

大家可以猜一下结果是多少呢?

bb?dbb?dbdb?

结果是 dbdb。也就是说 base. 的时候,调用的是 base 的,但 this. 的时候并不是 this 的,而是根据多态规则是基类就是基类,是派生类就是派生类。

  • C# 类教程-类
  • C# 类教程-类成员:字段(域)、属性、索引
  • C# 类教程-类成员:方法、事件
  • C# 类教程-类成员:运算符重载与索引器
  • C# 类教程-类成员:构造函数和析构函数
  • C# 类教程-类成员:嵌套类型
  • C# 类教程-访问修饰符与可访问性级别
  • C# 类教程-继承
  • C# 类教程-继承:方法重载
  • C# 类教程-继承:隐藏(new)
  • C# 类教程-继承:重写(virtual 与 override)
  • C# 类教程-继承:抽象(abstract)
  • C# 类教程-多态性

你可能感兴趣的