C#中的overload,overwrite,override的语义区别
2014-09-02 16:15
666 查看
overload (重载)关键字: 无
1.使用的地方:同一类里。(其实是同一类里同一名称的方法不同版本的一种叫法)
2.要重载的方法和被重载的方法要求:参数列表不同或返回类型和参数列表都不同,只有返回类型不同不能重载。(所谓的参数列表不同就是参数个数或者参数类型不同或者二者都不同)
overwrite (重写)关键字:new
1.用来是从父类继承的与是由了new关键字的方法的方法名一样的所以方法无效就像父类里不存在这些方法一样。只要去方法名一样别的没要求。
override (覆写)关键字: override
1.override的方法必须父类的(直接父类或间接父类(就是向上n层的父类))虚方法或抽象方法其中抽象方法是必须覆写的。
2.要求3处相同:相同的方法名称称;相同的参数列表;相同的返回类型。
1.使用的地方:同一类里。(其实是同一类里同一名称的方法不同版本的一种叫法)
2.要重载的方法和被重载的方法要求:参数列表不同或返回类型和参数列表都不同,只有返回类型不同不能重载。(所谓的参数列表不同就是参数个数或者参数类型不同或者二者都不同)
overwrite (重写)关键字:new
1.用来是从父类继承的与是由了new关键字的方法的方法名一样的所以方法无效就像父类里不存在这些方法一样。只要去方法名一样别的没要求。
override (覆写)关键字: override
1.override的方法必须父类的(直接父类或间接父类(就是向上n层的父类))虚方法或抽象方法其中抽象方法是必须覆写的。
2.要求3处相同:相同的方法名称称;相同的参数列表;相同的返回类型。
using System; using System.Collections.Generic; using System.Text; namespace Override_Overload_Overwrite { class Parent { public void F() { Console.WriteLine("Parent.F()"); } public virtual void G() { Console.WriteLine("Parent.G()"); } public int Add(int x, int y) { return x + y; } //重载(overload)Add函数 public float Add(float x, float y) { return x + y; } } class ChildOne:Parent { //重写(overwrite)父类函数 new public void F() { Console.WriteLine("ChildOne.F()"); } //覆写(override)父类虚函数,主要实现多态 public override void G() { Console.WriteLine("ChildOne.G()"); } } class ChildTwo:Parent { new public void F() { Console.WriteLine("ChildTwo.F()"); } public override void G() { Console.WriteLine("ChildTwo.G()"); } } class Program { static void Main(string[] args) { Parent childOne = new ChildOne(); Parent childTwo = new ChildTwo(); //调用Parent.F() childOne.F(); childTwo.F(); //实现多态 childOne.G(); childTwo.G(); Parent load = new Parent(); //重载(overload) Console.WriteLine(load.Add(1, 2)); Console.WriteLine(load.Add(3.4f, 4.5f)); Console.Read(); } } }
相关文章推荐
- C#中overload,override和overwrite的区别
- C# override overload overwrite
- C++中Overload、Overwrite及Override的区别
- 从零开始学C++之继承(一):公有/私有/保护继承、overload/overwrite/override之间的区别
- C++中Overload、Overwrite及Override的区别
- 【经典】C#中隐藏(new)、方法重写(override)、重载(overload)的区别
- C#中重载(overload)和覆写(override)的区别
- 从零开始学C++之继承(一):公有/私有/保护继承、overload/overwrite/override之间的区别
- C#中override和overload的区别
- C++中Overload、Overwrite和Override区别
- c#中隐藏(new)和方法重写(override)和重写(overload)的区别
- C++中 overload 、override、overwrite 之间的区别
- 关于overload,overwrite,override的使用区别
- C++中overload,override,overwrite的区别详细解析
- C# override overload overwrite
- C#中隐藏(new)和方法重写(override)和重载(overload)的区别
- override overwrite overload 区别
- C#中隐藏(new)和方法重写(override)和重载(overload)的区别
- C++中 overload 、override、overwrite 之间的区别
- [黑马程序员]C#中override和overload的区别 (二)