探索Virtual、New和Override关键字在面向对象编程中的作用

     引言: 在面向对象编程中,Virtual、New和Override是三个重要的关键字。它们在继承、多态和方法重写等方面起到了关键作用。本博客将深入探讨这些关键字的含义、用法和作用,以帮助读者更好地理解它们在编程中的作用:

  1. Virtual关键字: Virtual关键字用于指示方法可以在派生类中被重写。使用virtual关键字,我们可以在基类中定义虚拟方法,并在派生类中根据需要进行重写。虚拟方法通过基类的引用或指针调用时,实际上会调用派生类中重写的方法。这种技术称为动态绑定,它实现了运行时多态性。通过虚拟方法,我们可以通过基类类型调用派生类的方法,提供了更大的灵活性和可扩展性。
  2. New关键字: New关键字用于隐藏基类中的成员,并在派生类中重新定义。当我们在派生类中使用new关键字重新定义一个成员时,该成员会隐藏基类中的同名成员。这种技术称为隐藏方法。使用new关键字的隐藏方法将在基类和派生类之间创建两个独立的成员。当我们通过基类的引用或指针调用该成员时,会调用基类的方法。而当我们通过派生类的引用或指针调用该成员时,会调用派生类的方法。这种技术允许我们在派生类中对基类的成员进行修改、扩展或特化。
  3. Override关键字: Override关键字用于在派生类中重写基类中的虚拟方法。使用override关键字,我们可以在派生类中对基类中的虚拟方法进行重写。派生类中重写的方法将完全替代基类中的方法,并且在运行时通过基类的引用或指针调用时,会调用派生类中重写的方法。通过方法重写,我们可以在派生类中提供更具体、更适应当前需求的实现。这种技术实现了运行时多态性,允许我们在派生类中自定义虚拟方法的行为。
  4. 关系和区别:
  • 标记为Virtual的方法可以在派生类中重写,实现多态性;标记为New的方法隐藏基类中的成员,而不是重写。
  • 使用Override关键字可以通过基类引用调用派生类中的重写方法;使用New关键字无法通过基类引用调用派生类中的隐藏方法。
  • Override关键字触发运行时多态性,而New关键字不会。

   5.使用场景:

  • 当希望在派生类中修改或扩展基类方法的行为时,使用Virtual和Override关键字。
  • 当希望隐藏基类中的成员或方法,并在派生类中提供新的实现时,使用New关键字

   以下代码进行详细介绍:

C#中的virtual、new、override

new相当于重载

override相当于覆盖

using System; 

using System.Collections.Generic; 

using System.Linq; using System.Text; 

namespace ConsoleApplication1 

class Program { 

static void Main(string[] args) { 

    father _father = new son1(); 

      _father.printclassname();

     son _son = new son1(); 

      _son.printclassname(); 

      son0 _son0 = new son1(); 

      _son0.printclassname(); 

public class father { 

public father() { } 

public void printclassname() 

{

 Console.WriteLine("father");

 }

 }

 public class son : father

 { 

public son() { } 

public new virtual void printclassname() 

{

 Console.WriteLine("son"); 

}

public class son0 : son 

public son0() { } 

public new virtual void printclassname() 

{ Console.WriteLine("son0"); } 

public class son1 : son0 

public son1() { } 

public override void printclassname() 

{ Console.WriteLine("son1"); } 

}

输出的答案为:father

              son

              son1

 

     结论: Virtual、New和Override是面向对象编程中重要的关键字,它们在继承、多态和方法重写方面发挥着关键作用。通过使用virtual关键字,我们可以在派生类中对基类的虚拟方法进行重写,实现运行时多态性。使用new关键字,我们可以在派生类中隐藏基类的成员,并重新定义具有相同名称的成员。而使用override关键字,我们可以在派生类中重写基类的虚拟方法,实现自定义行为。这些关键字为我们提供了更大的灵活性和可扩展性,使我们能够更好地组织和设计面向对象的代码。

     希望本博客能够帮助读者更好地理解Virtual、New和Override关键字的概念和作用,并在实际编程中合理地运用它们,提高代码的可读性和可维护性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值