iis服务器助手广告
返回顶部
首页 > 资讯 > 精选 >C#中重写及覆盖的区别有哪些
  • 115
分享到

C#中重写及覆盖的区别有哪些

2023-07-05 17:07:54 115人浏览 泡泡鱼
摘要

这篇文章主要介绍了C#中重写及覆盖的区别有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C#中重写及覆盖的区别有哪些文章都会有所收获,下面我们一起来看看吧。1. 重写和覆盖的定义1.1 重写(overrid

这篇文章主要介绍了C#中重写及覆盖的区别有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C#中重写及覆盖的区别有哪些文章都会有所收获,下面我们一起来看看吧。

1. 重写和覆盖的定义

1.1 重写(override)的定义

在C#中,用override关键字来重写一个父类中的虚方法或抽象方法。override关键字用于指示编译器,我要用派生类中的一个方法,重写基类中的同名方法。通过重写基类中的方法,可以实现多态性。有关重写与虚方法和抽象方法的详细示例,可移步C#虚方法和抽象方法示例。

override关键字的语法如下:

public override returnType MethodName(ParameterList){    // 方法实现}

其中,public表示访问修饰符;override表示重写虚方法或抽象方法;returnType表示方法的返回类型;MethodName表示方法名称;ParameterList表示方法的参数列表。

需要注意的是,重写方法的访问修饰符必须与被重写方法的访问修饰符相同或更为宽松。

1.2 覆盖(new)的定义

在C#中,用new关键字来覆盖一个父类中的成员方法或成员变量。new关键字用于指示编译器,派生类中的一个方法或变量将隐藏基类中的同名方法或变量,从而改变了继承体系中的原有布局关系。

new关键字的语法如下:

new returnType MemberName(ParameterList){    // 成员实现}

其中,returnType表示成员的返回类型;MemberName表示成员的名称;ParameterList表示成员的参数列表。

2. 两者的区别及示例

下面是一个示例:

//父类  public class FatherClass  {    public virtual string GetName()    {      return "我是父类中的虚拟方法";    }  }  //子类1  public class SonClass1 : FatherClass  {    public override string GetName()    {      return "我是子类1中的重写方法";    }  }  //子类2  public class SonClass2 : FatherClass  {    public new string GetName()    {      return "我是子类2中的覆盖方法";    }  }

随后通过程序入口函数调用:

 public class Program  {    public static void Main(string[] args)    {      FatherClass fatherClass = new FatherClass();      Console.Write("直接调用父类中的虚方法:");      Console.WriteLine(fatherClass.GetName());      SonClass1 s1 = new SonClass1();      Console.Write("直接调用子类1中的重写方法:");      Console.WriteLine(s1.GetName());      SonClass2 s2 = new SonClass2();      Console.Write("直接调用子类2中的覆盖方法:");      Console.WriteLine(s2.GetName());      FatherClass f1 = new SonClass1();      Console.Write("声明父类,调用子类1中的重写方法:");      Console.WriteLine(f1.GetName());      FatherClass f2 = new SonClass2();      Console.Write("声明父类,调用子类2中的覆盖方法:");      Console.WriteLine(f2.GetName());    }  }

运行程序,得到的结果如下:

直接调用父类中的虚方法:我是父类中的虚拟方法
直接调用子类1中的重写方法:我是子类1中的重写方法
直接调用子类2中的覆盖方法:我是子类2中的覆盖方法

声明父类,调用子类1中的重写方法:我是子类1中的重写方法
声明父类,调用子类2中的覆盖方法:我是父类中的虚拟方法

关于“C#中重写及覆盖的区别有哪些”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“C#中重写及覆盖的区别有哪些”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网精选频道。

--结束END--

本文标题: C#中重写及覆盖的区别有哪些

本文链接: https://www.lsjlt.com/news/353792.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C#中重写及覆盖的区别有哪些
    这篇文章主要介绍了C#中重写及覆盖的区别有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C#中重写及覆盖的区别有哪些文章都会有所收获,下面我们一起来看看吧。1. 重写和覆盖的定义1.1 重写(overrid...
    99+
    2023-07-05
  • C++深入探究重载重写覆盖的区别
    目录基类实现子类实现函数调用总结资源链接基类实现 我们先实现一个基类 class BaseTest { private: virtual void display() { c...
    99+
    2022-11-13
    C++ 重载 C++ 重写 C++ 覆盖
  • java覆盖和重写有什么区别
    在Java中,覆盖(Overriding)和重写(Overloading)是指子类对父类中的方法进行重新实现的过程。它们的区别如下:...
    99+
    2023-10-18
    java
  • 重写、覆盖、重载、多态区别是什么
    今天小编给大家分享一下重写、覆盖、重载、多态区别是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。override->...
    99+
    2023-06-27
  • C++覆盖和重载的区别是什么
    这篇文章主要讲解了“C++覆盖和重载的区别是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++覆盖和重载的区别是什么”吧!1、覆盖覆盖也称为重写(override)。覆盖是存在类中,子...
    99+
    2023-06-16
  • java覆盖和重载有什么区别
    Java中的覆盖(Override)和重载(Overload)是两个不同的概念。覆盖是指子类重新定义了父类的方法,使得子类的方法与父...
    99+
    2023-08-21
    java
  • java中重载和重写的区别有哪些
    这篇文章主要介绍了java中重载和重写的区别有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1.重载重载指在一个类中,具有多个相同名称的方法,他们的参数列表却不相同(参数...
    99+
    2023-06-25
  • 重载和重写的区别有哪些
    这篇文章主要介绍“重载和重写的区别有哪些”,在日常操作中,相信很多人在重载和重写的区别有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”重载和重写的区别有哪些”的疑惑有所帮...
    99+
    2024-04-02
  • java重载与重写的区别有哪些
    本篇内容主要讲解“java重载与重写的区别有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“java重载与重写的区别有哪些”吧!区别:1、重载实现的是编译时的多态性,而重写实现的是运行时的多态...
    99+
    2023-07-04
  • C++函数重载、隐藏与覆盖重写的精通指南
    前言 对于C++函数而言,多个函数如果同名会有很多有意思的事情,从声明的作用域来看,在横向上同一个可访问作用域里面的同名函数可以进行重载;而纵向上作用域对于父子继承的派生类来说,同样...
    99+
    2024-04-02
  • 浅析C++中的重载,隐藏和覆盖
    重载关系 一组函数要重载,必须处在同一个作用域中 ,而且函数名字相同,参数列表不同 代码1中的Base中的 show() 和show(int) 属于重载 代码2中的Base中的 sh...
    99+
    2022-12-08
    C++重载 隐藏 覆盖 C++重载 C++ 隐藏 C++ 覆盖
  • C++ 函数重写:揭开继承中的行为覆盖秘籍
    当派生类定义同名且实现不同的函数时,发生函数重写。规则包括:使用 override 关键字。名称、参数和返回类型与基类函数相同。访问权限不得低于基类函数。通过重写,派生类可以覆盖基类行为...
    99+
    2024-04-30
    c++ 函数重写
  • C++ 中的函数重载和函数覆盖
    c++++ 中,函数重载允许创建具有相同名称但不同参数列表的函数。函数覆盖发生在派生类中,派生类中定义的函数与基类中同名函数覆盖基类的方法。 C++ 中的函数重载和函数覆盖 引言 函数...
    99+
    2024-04-14
    函数重载 函数覆盖 c++
  • C++ 函数重写详解:覆盖父类函数的奥妙
    c++++ 的函数重写允许子类覆盖父类的函数,提供自己的特定实现。子类需要声明一个与父类同名、同参数类型的函数,并使用 override 关键字标记。重写函数可以用于扩展父类功能、为子类...
    99+
    2024-05-04
    c++ 函数重写
  • C++函数重载、隐藏与覆盖重写的方法是什么
    这篇文章主要介绍了C++函数重载、隐藏与覆盖重写的方法是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C++函数重载、隐藏与覆盖重写的方法是什么文章都会有所收获,下面我们一起来看看吧。1 函数重载定义:C+...
    99+
    2023-06-29
  • C++ 函数重载与重写有何区别?
    c++++ 函数重载与重写:重载:同名函数具有不同的参数类型或数量,编译时选择合适版本。重写:派生类中与基类同名函数,覆盖基类实现,提供派生类特定实现。重载特征:参数类型或数量不同,编译...
    99+
    2024-04-13
    c++ 函数重载 函数重写 作用域
  • 餐厅无线AP覆盖的特点有哪些
    这篇文章将为大家详细讲解有关餐厅无线AP覆盖的特点有哪些,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。    仍有许多餐厅运营商没有意识到在餐厅安装WiFi的重要性,或者...
    99+
    2023-06-04
  • MySQL中复合索引和覆盖索引的区别详解
    目录前言准备复合索引覆盖索引总结前言准备 我们先准备一张表和几个字段,方便介绍覆盖索引和复合索引。 创建一个user表,表中有id、name、school、age字段。 字段名字段类型idintnamevarcharsc...
    99+
    2023-11-23
    MySQL 复合索引 MySQL 覆盖索引
  • python中的类class: 继承、覆盖、重写、重载、扩展、多态、封装
    一、python中的类 使用 class 关键字创建类。类中有方法、属性。 1.1 __init__() 函数 类的内置 __init__() 函数。所有类都有一个名为 __init__() 的函数,它在启动类时执行。 使用 __init_...
    99+
    2023-09-14
    python class类
  • C++中thread和pthread的区别有哪些
    C++中的thread是C++11标准引入的线程库,而pthread是POSIX标准中定义的线程库。它们之间的主要区别如下:1. 语...
    99+
    2023-10-20
    C++
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作