- 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# 类教程-多态性