我还在上大学,只记得在学习Java时听到过一种类型的多态性;但是,当我在C#课上时,我只记得我的教授谈论了4种类型的多态性。
我只知道子类化和在更具体的类中定义特定行为,并且能够通过接口签名在基类中使用单个方法调用这些特定行为。
其他类型是什么,它们是否与我们上面教授的唯一类型一样重要?这就是没有教过的原因吗?
答案 0 :(得分:4)
是的,有4种多态
重载(相同的函数名,不同的参数类型。这包括运算符重载并在编译时完成)
参数化多态(这些就像C ++中的模板一样)编译时间
子类型多态(如果函数有一个带子类型的参数,例如Car-> Honda,f(Car),那么函数f也将接受f(本田) 。)运行时
参数强制(这是一个隐式类型转换。例如,一个函数可能需要一个double / real / float,但是会接受一个int并隐式转换参数) 编制时间
参考: