长期以来,一直听大家都在说面向对象和面向过程,一直也没太懂什么意思,一番研究过后好像有一点懂了,个人见解,说错请帮我纠正。
所谓面向过程,打个比方,就好像你生病了,你也不知道到底什么病,反正医生说了,第一步你要先吃两颗药丸,第二步你要打一针,第三步你留下来输液吧。这整个流程走完,恭喜你,你的病好啦,这事儿也就算完,而像这样分步骤一步两步三步的去治病,整个过程按流程走,这就是一个面向过程的思想。
那什么又是面向对象呢?就好像今天有一群人生病了,来到医院,医生让这一群人排排站,然后拎出来三个人,对护士A说,这三个人是感冒,你照着感冒的治疗方案给他们开药吧,再拎出来两个人,对护士B说,这两个人是拉肚子,你照着拉肚子的治疗方案给他们开药吧;再然后对护士C说,剩下的人都是绝症,带他们去太平间蹲着吧。这样本来是一大群人,医生把他们分几类,很快就解决完所有问题了。面向对象的两大关键,一个是类,一个便是对象,在刚刚的事例中,感冒这一病便是一个类,拉肚子这一病也是一个类,绝症也是一个类,而具体患病的人就是一个对象,每一个类对应的治疗方案便是类的一个属性,具体治疗措施便是方法。医生将所有病人分为多个类,每个类的所有人再同一治疗,大家并不知道具体是怎么治疗的,反正你感冒了医生就让你去找A护士,这就是面向对象。
面向对象有什么优点呢?通常,大家谈起面向对象,总会说到三个词, 继承、封装、多态,这边上面向对象的优点。
什么是继承,其实就是字面意思,儿子继承老爸的,继承的一大优势就是省事儿,方便,就像你爸要是马云你就可以少奋斗30年一样;具体来说,就像你感冒发烧了,那针对这一个问题的治疗方案里面包含了治疗发烧的治疗方案,这时候感冒发烧里面就可以不用再在这里面写发烧的治疗方案了啊,直接继承发烧这个类,也就继承到了发烧的治疗方案了,这个时候,感冒发烧就成了发烧的子类,而发烧就成了感冒发烧的老爹。
什么又是封装?所谓封装就是把共同的特征封装起来单独成类,而具有这一特征的所有类直接继承这个通用类就好,这样就不用在每一个类中都写相同的代码,一旦这些通用的代码需要作出一定的修改,你也只需要改通用类就好,不需要每个类都去改了,即将低了冗余度,又增加了通用性,多好!!封装不仅可以封装类,也可以封装方法,一样的道理。就程序员的强迫症来说,封装过的代码比没封装过的代码美太多(就如同满身赘肉的胖妇人和马甲线女神的区别)。
最后说多态,明明是父类变量,却指向子类对象,这就是多态,此时父类变量可以调用子类中重写了的父类方法,当然子类自己的方法父类是无法调用的,这样可以做到的是同一种类型同一种方法,多种实现,但是子类变量不能指向父类对象,先不说其他的问题,你既然要写子类一定就是父类不能满足你的需求,既然这样你定义了子类变量却用来指向父类对象。。。。那你写子类干嘛。。。。