我看面向对象
已经面向对象编程多年了,渐渐地对面向对象有了越来越深的体会,下面谈谈我对面向对象的拙见:)
面向对象三大特性:封装、继承、多态。
首先是封装,我觉得封装是面向对象的基础,封装让各种相关的数据和方法形成一个有机的整体(对象)。各种对象由于组成元素(字段、属性)和行为(方法)的不同而不同,这样世界才丰富多彩。封装让对象内部与外界有了明显的”界”。再谈谈封装的粒度,完全面向对象编程是不可能的或很不现实的,并且没必要,面向对象并不是对现实的模拟,需要根据项目的情况来调整对象的粒度,比如:现在我们考察一个地区有多少栋建筑,就没必要考虑建筑的形状,建筑的层数,建筑里有多少房间等。我觉得把握适当的粒度也从一方面反映个人抽象能力。
其次是继承,继承是面向对象中类与类(接口)之间的关系,我觉得用生物进化论类比继承是很恰当的,继承让对象衍生出更具多样性的对象(多态)。继承的出发点是好的,然而在编程过程中继承的深度是需要谨慎考虑,继承得太深了容易陷入模拟现实的圈子里。Adapter设计模式,把继承的深度降低了,同时设计带来了更大的灵活性。依赖抽象(或基类),不要依赖具体。
最后是多态,我觉的多态可以从宏观和微观两个方面来看。从宏观来看,类的泛化是一种多态的表现形式,派生类扩展了基类,基类下的派生类共性于基类,特性于扩展;微观上看,就要深入类的内部了,重载反映了行为上的多种形态,方法参数的抽象性我觉得也是多态的体现。
封装 — 造“物”,继承 — 进化,多态 — 求同存异。
以上是本人对面向对象见解,不喜勿喷,因为多态:)