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#编程语言中,重写、重载和多态是面向对象编程的三大核心特性,它们对于构建灵活、可扩展的代码结构至关重要。 首先,我们来看“重写”。重写(Override)允许子类对从基类继承来的方法进行重新定义,以便提供...
理论对应实例,各自讲解加区别。绝对可以帮到你。
### C#中的重载(Overload)与重写(Override) #### 1. 重载(Overload) ...综上所述,C#中的重载、重写、隐藏、数组、集合和委托都是编程中非常重要的概念。掌握这些概念可以帮助开发者更加高效地进行软件开发工作。
这个方法具有多种重载形式,使得开发者可以根据实际需求定制对话框的显示内容和样式。下面我们将详细探讨`MessageBox.Show`方法的重载及其在实践中的应用。 首先,`MessageBox.Show`的基本形式是`MessageBox.Show...
在C#编程语言中,多态(Polymorphism)、重载(Overloading)和重写(Overriding)是面向对象编程的三个核心概念,它们分别提供了不同的功能和灵活性。下面我们将详细探讨这三个概念以及它们之间的区别。 首先,...
前段时间,刚学完C#,其中重载、重写傻傻分不清楚。如今通过查阅资料对这两者有了一个大概的理解,不足之处还请多多指教。 二、定义 重载:在同一定义域内(比如一个类里面)。方法名相同,参数个数、次序、类型...
在C#编程语言中,重写(Override)和重载(Overload)是两种非常重要的概念,它们分别涉及对象多态性和方法的可选性。理解这两者的区别对于编写高效且易于维护的代码至关重要。 首先,让我们深入了解一下重写(Override)...
### 重写与重载的区别 #### 一、概述 在面向对象编程中,方法的重写(Overriding)和重载(Overloading)是非常重要的概念。这两种机制可以帮助程序员更灵活地管理和组织代码,提高代码的复用性和可扩展性。 ####...
C#中重载重写和覆盖的定义与区别 C#中重载、重写和覆盖是三个重要的概念,它们都是在面向对象编程中使用的,但是它们之间有着明显的区别。 一、重载 重载(Overload)是重新加载的意思,指的是同一个类中同名,...
总结来说,重载、重构和重写是C#中非常重要的概念,它们分别涉及方法的命名、代码结构的优化以及继承关系中的方法实现。掌握这些概念有助于编写更高质量的代码,并能够更好地应对未来的需求变化。
本资源摘要信息涵盖了C#基础知识的主要要点,包括变量和数据类型、方法重载和方法重写、值类型和引用类型、访问修饰符、主函数和构造函数、事件处理、文件对话框和消息框、窗体边框和样式等方面的知识点。
C#的base关键字用于调用父类方法,virtual和override关键字用于方法重写,Java的重写则直接覆盖父类方法,但需使用@Override注解。 9. 事件: Java通过自定义监听器实现事件,而C#使用委托来定义和处理事件,更加...
10. **继承和覆盖**:在C#中,`new`关键字用于隐藏基类的成员。在这个例子中,`BaseClass`的`i`被`MyClass`的`i`隐藏,因此,当通过`BaseClass`的引用访问`i`时,实际上是访问基类的`i`,而不会影响派生类的`i`。 ...
在面向对象编程语言中,如Java、C#等,重载(Overloading)、重写(Overriding)、覆盖(也称为重写)以及多态(Polymorphism)是几个非常重要的概念。它们之间既有关联又有区别,本文将详细解释这些概念,并探讨...
8. **方法重载与方法重写**:`ReloadFunction`可能与方法重载(Overloading)和方法重写(Overriding)有关,前者在同一类中允许有多个同名但参数列表不同的方法,后者是子类对父类虚方法的重新定义。 9. **运算符...
code #1 代码如下:private void Form1_SizeChanged(object sender, EventArgs e) //最小化隐藏窗体 { if (this.WindowState == FormWindowState.Minimized)//窗体状态为最小化 { StopRectTimer.Enabled = false;...
7. 方法重载与重写:了解方法签名,以及如何通过重载实现方法的多态性,重写用于实现虚方法的覆盖。 三、.NET框架 8. 集合与泛型:理解ArrayList与List的区别,以及泛型集合的使用,如Dictionary, TValue>。 9. ...