override帽子怎么样_override_boot override

如题所述

代码如下:

csharp
class Father {
public void GetFullName() {
Console.WriteLine("Father: " + firstname + " " + lastname);
}
public virtual void PrintName() {
Console.WriteLine("Father: " + this.GetType().ToString());
}
}

class Son : Father {
public override void GetFullName() {
Console.WriteLine("Son: " + firstname + " " + lastname);
}
public override void PrintName() {
Console.WriteLine("Son: " + this.GetType().ToString());
}
}

class Program {
static void Main(string[] args) {
Father father = new Father();
Father son = new Son();
father.GetFullName();
son.GetFullName();
father.PrintName();
son.PrintName();
}
}

输出结果:

Father: Father:myNamespace.Father

Son: Son:myNamespace.Son

Father: Father:myNamespace.Father

Son: Son:myNamespace.Son

若将派生类中的 GetFullName 方法的 override 更改为 new,结果如下:

Father: Father:myNamespace.Father

Son: Father:myNamespace.Father

Father: Father:myNamespace.Father

Son: Father:myNamespace.Father

可见使用 override 的方法能够被子类覆盖,而 new 则没有这个能力。使用 override 能够实现更严格的接口,提供更好的封装性。

在 C# 中,派生类可以包含与基类方法同名的方法。如果派生类的方法前面带有 override 关键字,那么派生类的对象将调用该方法,而不是调用基类方法。相反,new 关键字用于创建一个独立的方法,与基类中的同名方法无关。override 关键字使方法成为虚方法的覆盖版本,而 new 关键字则创建新的方法。

在本示例中,基类 Father 包含一个 GetFullName 方法和一个 PrintName 方法。派生类 Son 同时覆盖了这两个方法。通过 override 关键字,Son 类中的方法能够覆盖基类中的方法。当调用方法时,Son 类的对象将调用其覆盖的方法,而不是基类方法。另一方面,使用 new 关键字时,新的方法与基类方法无关,即使在派生类中具有相同名称。

此外,使用 base 关键字可以在派生类中调用基类的方法。在上述代码中,可以通过 base 关键字调用基类 Father 的 PrintName 方法。在调用 base 方法时,将使用基类的方法而不是派生类中的覆盖方法。

总之,override、new 和 virtual 关键字在 C# 中用于管理派生类与基类之间的方法关系。它们允许派生类覆盖基类的方法,创建独立的方法,或者调用基类的方法。理解这些关键字的用法对于实现良好的封装性和接口一致性至关重要。
温馨提示:答案为网友推荐,仅供参考
相似回答
大家正在搜