`

C#重载、C#重写和C#隐藏的区别

    博客分类:
  • C#
c# 
阅读更多

C#重载、C#重写和C#隐藏的定义

C#重载:同一个作用域内发生(比如一个类里面),定义一系列同名方法,但是方法的参数列表不同。这样才能通过传递不同的参数来决定到底调用哪一个。而返回值类型不同是不能构成重载的。

C#重写:继承时发生,在子类中重新定义父类中的方法,子类中的方法和父类的方法是一样的

例如:基类方法声明为virtual(虚方法),派生类中使用override申明此方法的重写.

C#隐藏:基类方法不做申明(默认为非虚方法),在派生类中使用new声明此方法的隐藏。

C#重载时,根据参数选择调用的方法;

C#重写时,访问父类子类皆调用子类的重写方法;

C#隐藏时,访问父类则调用父类的方法,子类子类的方法。

C#隐藏(new)示例:

using    System;    
   class    A    
   {    
         public    void    F()      
         {    
               Console.WriteLine("A.F");      
         }    
   }    
   class    B:    A    
   {    
         new    public    void    F()      
         {      
               Console.WriteLine("B.F");      
         }    
   }    
   class    Test    
   {    
         static void Main(string[] args)  
         {    
               B    b    =    new    B();    
               b.F();    
               A    a    =    b;      
               a.F();    
         }    
   }   

 输出为 

B.F 

A.F 

C#重写virtual(虚方法)示例  

using    System;    
 class    A    
 {    
       public    virtual    void    F()      
       {    
             Console.WriteLine("A.F");      
       }    
 }    
 class    B:    A    
 {    
       public    override    void    F()      
       {      
             Console.WriteLine("B.F");      
       }    
 }    
 class    Test    
 {    
       static    void    Main()      
       {    
             B    b    =    new    B();    
             b.F();    
             A    a    =    b;      
             a.F();    
       }    
 }  

 输出为 

B.F 

B.F

补充:重写override一般用于接口实现和继承类的方法改写,要注意

1、覆盖的方法的标志必须要和被覆盖的方法的标志完全匹配,才能达到覆盖的效果;

2、覆盖的方法的返回值必须和被覆盖的方法的返回一致;

3、覆盖的方法所抛出的异常必须和被覆盖方法的所抛出的异常一致,或者是其子类;

4、被覆盖的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行覆盖。

 

原帖地址:点此

分享到:
评论

相关推荐

    C#重写重载与多态

    在C#编程语言中,重写、重载和多态是面向对象编程的三大核心特性,它们对于构建灵活、可扩展的代码结构至关重要。 首先,我们来看“重写”。重写(Override)允许子类对从基类继承来的方法进行重新定义,以便提供...

    c#和java中的重写重载和隐藏

    理论对应实例,各自讲解加区别。绝对可以帮到你。

    C#_重载重写_隐藏_数组_集合_委托

    ### C#中的重载(Overload)与重写(Override) #### 1. 重载(Overload) ...综上所述,C#中的重载、重写、隐藏、数组、集合和委托都是编程中非常重要的概念。掌握这些概念可以帮助开发者更加高效地进行软件开发工作。

    C# MessageBox.Show 方法重载

    这个方法具有多种重载形式,使得开发者可以根据实际需求定制对话框的显示内容和样式。下面我们将详细探讨`MessageBox.Show`方法的重载及其在实践中的应用。 首先,`MessageBox.Show`的基本形式是`MessageBox.Show...

    C#中多态、重载、重写区别分析

    在C#编程语言中,多态(Polymorphism)、重载(Overloading)和重写(Overriding)是面向对象编程的三个核心概念,它们分别提供了不同的功能和灵活性。下面我们将详细探讨这三个概念以及它们之间的区别。 首先,...

    C#中重载与重写区别分析

    前段时间,刚学完C#,其中重载、重写傻傻分不清楚。如今通过查阅资料对这两者有了一个大概的理解,不足之处还请多多指教。 二、定义  重载:在同一定义域内(比如一个类里面)。方法名相同,参数个数、次序、类型...

    重写(override)和重载(overload)的区别

    在C#编程语言中,重写(Override)和重载(Overload)是两种非常重要的概念,它们分别涉及对象多态性和方法的可选性。理解这两者的区别对于编写高效且易于维护的代码至关重要。 首先,让我们深入了解一下重写(Override)...

    重写和重载的区别

    ### 重写与重载的区别 #### 一、概述 在面向对象编程中,方法的重写(Overriding)和重载(Overloading)是非常重要的概念。这两种机制可以帮助程序员更灵活地管理和组织代码,提高代码的复用性和可扩展性。 ####...

    C#中重载重写和覆盖的定义与区别

    C#中重载重写和覆盖的定义与区别 C#中重载、重写和覆盖是三个重要的概念,它们都是在面向对象编程中使用的,但是它们之间有着明显的区别。 一、重载 重载(Overload)是重新加载的意思,指的是同一个类中同名,...

    重载、重写、重构.md

    总结来说,重载、重构和重写是C#中非常重要的概念,它们分别涉及方法的命名、代码结构的优化以及继承关系中的方法实现。掌握这些概念有助于编写更高质量的代码,并能够更好地应对未来的需求变化。

    2012考试技术基础(C#)试题+答案

    本资源摘要信息涵盖了C#基础知识的主要要点,包括变量和数据类型、方法重载和方法重写、值类型和引用类型、访问修饰符、主函数和构造函数、事件处理、文件对话框和消息框、窗体边框和样式等方面的知识点。

    C#和JAVA的区别总结

    C#的base关键字用于调用父类方法,virtual和override关键字用于方法重写,Java的重写则直接覆盖父类方法,但需使用@Override注解。 9. 事件: Java通过自定义监听器实现事件,而C#使用委托来定义和处理事件,更加...

    C#考试题目大全C#考试题目大全

    10. **继承和覆盖**:在C#中,`new`关键字用于隐藏基类的成员。在这个例子中,`BaseClass`的`i`被`MyClass`的`i`隐藏,因此,当通过`BaseClass`的引用访问`i`时,实际上是访问基类的`i`,而不会影响派生类的`i`。 ...

    重载,重写,覆盖,多态

    在面向对象编程语言中,如Java、C#等,重载(Overloading)、重写(Overriding)、覆盖(也称为重写)以及多态(Polymorphism)是几个非常重要的概念。它们之间既有关联又有区别,本文将详细解释这些概念,并探讨...

    C#面向对象编程期末参考题

    8. **方法重载与方法重写**:`ReloadFunction`可能与方法重载(Overloading)和方法重写(Overriding)有关,前者在同一类中允许有多个同名但参数列表不同的方法,后者是子类对父类虚方法的重新定义。 9. **运算符...

    c# 重载WndProc,实现重写“最小化”的实现方法

    code #1 代码如下:private void Form1_SizeChanged(object sender, EventArgs e) //最小化隐藏窗体 { if (this.WindowState == FormWindowState.Minimized)//窗体状态为最小化 { StopRectTimer.Enabled = false;...

    c#笔试面试题 c#笔试面试题

    7. 方法重载与重写:了解方法签名,以及如何通过重载实现方法的多态性,重写用于实现虚方法的覆盖。 三、.NET框架 8. 集合与泛型:理解ArrayList与List的区别,以及泛型集合的使用,如Dictionary, TValue>。 9. ...

Global site tag (gtag.js) - Google Analytics