重载,重写,重构

来源:互联网 发布:js数组方法大全 编辑:程序博客网 时间:2024/05/22 06:41

验项目的时候师傅问到重载,重写,重构都是什么,重载隐约还知道怎么回事,可是重写,重构就不知道了,下来后翻书找了找,上网查了查,总算弄明白了。

重载:

方法的重载提供了创建同名的多个方法的能力,但这些方法需使用不同的参数类型。看个例子就懂了:

class Cat    {        private string name = "";        public Cat(string name)        {            this.name = name;        }        public Cat()    //将构造方法重载        {            this.name = "无名";        }        public string Shout()        {            return "我的名字叫" + name + "喵";         }    }

重写:

子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。方法重写又称方法覆盖。

举例:动物类存在"跑"的方法,从中派生出马和狗,马和狗的跑的形态是各不相同的,因此同样方法需要两种不同的实现,这就需要"重新编写"基类中的方法。"重写"基类方法就是修改它的实现或者说在派生类中重新编写。

重构:

猫和狗继承动物类,但是他们都有“叫”这个方法,除了叫的声音不一样之外,其余的都是一样的,这样造成了代码的重复,如果要修改这个方法得同时修改这两个子类,非常的麻烦。这时候重构就起了很重要的作用。它将重复的代码提到父类,再加一个获得叫的方法就可以了。具体实现如下:

class Animal{ //将共有代码提到父类 protected override void shout() {  return  getShoutSound(); }  //获得声音的方法 protected virtual string getShoutSound() {  return ""; }}//类猫继承动物class Cat : Animal{ Protected override string getShoutSound() {  return "喵" }}//狗类继承动物class Dog:Animal{ Protected override string getShoutSound() {  return "旺" }}

总结:

欠下的总是要还的。之前学习的时候没有总结,现在还是来总结了,通过重拾设计模式这个大boss,知道了他们之间微妙的区别,希望这篇博客能帮到您。



0 0