学习啦 > 知识大全 > 知识百科 > 公共基础知识 > .net重写和重载的区别

.net重写和重载的区别

时间: 映芳735 分享

.net重写和重载的区别

  接触过编程代码的人都知道重载和重写,但是很多人来说,总是不能很好的区别它们,其实区别它们很容易,只要你常常练习编代码,不久就能从本质上将他们区分开。

  小编给你举一下代码例子,可以通过代码了解一下

  OverrideNew.cs

  namespace NET.MST.Third.OverrideNew

  {

  public class OverrideNew

  {

  static void Main(string[] args)

  {

  //测试重写和隐藏的功能

  OverrideBase b = new OverrideBase();

学习啦在线学习网   NewBase nb = new NewBase();

  Console.WriteLine(ob.ToString() + ":" + ob.GetString());

  Console.WriteLine(nb.ToString() + ":" + nb.GetString());

学习啦在线学习网   Console.WriteLine("\r\n");

学习啦在线学习网   //重写和隐藏的区别

学习啦在线学习网   Base bb = ob as Base;

学习啦在线学习网   Base nbb = nb as Base;

  Console.WriteLine(obb.ToString() + ":" + obb.GetString());

  Console.WriteLine(nbb.ToString() + ":" + nbb.GetString());

  Console.Read();

  }

  }

  //基类

学习啦在线学习网   class Base

  {

  public virtual string GetString()

  {

  return "我是基类";

  }

  }

  //重写

  class OverrideBase : Base

  {

  public override string GetString()

  {

  return "我重写了基类";

  }

  }

  //隐藏

  class NewBase : Base

  {

学习啦在线学习网   public new virtual string GetString()

  {

  return "我隐藏了基类";

  }

  }

  }

  }

  //重写

  class OverrideBase : Base

  {

  public override string GetString()

  {

  return "我重写了基类";

  }

  }

  //隐藏

  class NewBase : Base

  {

  public new virtual string GetString()

  {

学习啦在线学习网   return "我隐藏了基类";

  }

  }

  }

  看完了上面的代码,是不是能理解重载和重写了呢,下面小编再给你说明一下重载和重写的定义。

  重载

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

  重写

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

530109