设计模式——面向对象基础(重构、抽象类)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lrtcsdn/article/details/82664807

【重构】
在前面面向对象三大特性中介绍了有其他动物来报名参加叫声比赛,如果再有更多的小动物来比赛呢?我们在实现相应的动物的类,在继承Animal,这时候我们会发现还有大量重复的代码,那该怎么办呢?这时候我们就可以用到重构了。
重构:指同一个类有 多个同名构造函数 ,但他们参数 不完全相同

abstract class Animal
    {
           protected string name = "";
 public string Shout()//变为普通方法
           {
               string result = "";
               for (int i = 0; i < shoutNum; i++)
                   result += getShoutSound() + ", ";//调用一个虚方法getShoutSound

               return "我的名字叫" + name + " " + result;
           }
    }

各个动物的代码

class Dog:Animal 
    {
        public Dog(): base()
        { }
        public Dog(string name): base(name)
        { }
        protected override string getShoutSound()
        {
            return "汪汪汪";
        }
    }

【抽象类】
在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。

特点:
一、抽象类不能实例化
二、抽象方法必须被子类重写的方法,抽象方法可以被看成是没有实体的虚方法
三、如果类中包含抽象方法,那么类就是必须定义为抽象类,不论是否包含其他一般方法。

猜你喜欢

转载自blog.csdn.net/lrtcsdn/article/details/82664807