接触过编程代码的人都知道重载和重写,一些编程高手能很清楚它们之间的区别,但是对于一些刚接触代码的新手来说,总是不能很好的区别它们,下面小编带你了解一下。
重载
同一个作用域内发生(比如一个类里面),定义一系列同名方法,但是方法的参数列表不同。这样才能通过传递不同的参数来决定到底调用哪一个。而返回值类型不同是不能构成重载的。

重写
继承时发生,在子类中重新定义父类中的方法,子类中的方法和父类的方法是一样的。
小编给你举一下代码例子,可以通过代码了解一下
  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("rn");
            //重写和隐藏的区别
            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 "我隐藏了基类";
        }
    }
}
看完了上面的代码,你现在能很好的区别重载与重写吗?希望这段代码对你有所帮助。
爱华网



