方法签名,重载,覆盖:所有这些术语是否相关?

Ant*_*hin 3 .net c# overriding overloading method-signature

术语"重载"和"覆盖"声音非常相似(这就是为什么它们有时相互对立),但这两个概念在技术上是否相关?

  1. "重载"和"覆盖"这两个术语是否相关?

术语"重载"取决于"方法签名"定义.所以我有一个类似的问题.

  1. (相关的)" 方法签名 " 一词是否与"覆盖"有关?

Bog*_*gey 8

重载具有多个具有相同名称但不同参数的函数.例如

例如

void SayHi(string name) { ... }
void SayHi(string, int age) {.... }
Run Code Online (Sandbox Code Playgroud)

这些都是重载.

覆盖"替换"现有函数,因此您将获取现有函数并提供具有相同名称和相同参数的全新函数

class Person
{
    public virtual void SayHi(string name)
    {
        // ....
    }
}

class Teenager : Person
{
    public override void SayHi(string name)
    {
        // ....
    }
}
Run Code Online (Sandbox Code Playgroud)

方法签名与覆盖新覆盖函数必须具有与它尝试覆盖的方法相同的方法签名以及相同返回类型的方式有关.

方法签名与重载有关,超载必须具有不同的方法签名.