标签:
前几篇博客说了重写和重载,今天主要说重构,顺便比较一下三者。
重构就是通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性。通俗点说,重构,就是改善既有代码的设计,让代码更加的符合面向对象规则。
而重写是出现在多态里的,virtual关键字声明虚方法,子类通过override来实现方法重写。在父类里声明了一个模糊的方法,并不给出具体的行为,在子类里,通过重写父类中的这个方法,让这个方法实例化,去适合子类。
重载,通俗来讲,它的作用就是可以让我们的选择更多,比如在类中声明了一个方法,但是在我实际调用时,这个方法有时候符合我想要的,有时候不符合,就比如一个婴儿出生,父母可能在出生前就想好了婴儿的名字,也可能出生后也没有想好,如果只用构造函数的话,只有一个方法,不能满足我的要求,这时候就要用到方法重载,之前的的方法保留,再增加一个方法,接着这个例子,如果父母给婴儿娶了名字,那么,用原有的方法,如果没有取名字,就会用重载后的方法。
class Animal { …… public string Shout() { string result = ""; for (int i = 0; i < shoutNum; i++) result += getShoutSound() + ","; return "我的名字叫" + name + " " + result; } protected virtual string getShoutSound() { //“得到叫声”,虚方法,让子类重写,只需要给继承的子类使用,所以用protected修饰符。 return ""; } }这时候子类就非常简单了。比如,我们还让猫来叫。
class Cat : Animal { public Cat():base() {} public Cat(string name):base(name) {} protected override string getShoutSound() { return "喵" } }其余几个动物都和猫一样,改下叫声就好了。虽然具体动物没有了Shout方法,但是它继承于Animal,Animal的Shout方法就可以被具体的动物继承,当然,外界也也可以调用具体动物的这个方法。
标签:
原文地址:http://blog.csdn.net/sds15732622190/article/details/50448602