多年开发经验对《面向对象》的理解
在我理解,面向对象是向现实世界模型的自然延伸,这是一种“万物皆对象”的编程思想。
在现实生活中的任何物体都可以归为一类事物,而每一个物体都是一类事物的实例。
面向对象的编程是以对象为中心,以消息为驱动,所以程序=对象+消息。
面向对象有三大特性,封装、继承和多态。
封装就是将一类事物的属性和行为抽象成一个类,在java中以class来呈现,
使其属性私有化,行为公开化,提高了数据的隐秘性的同时,使代码模块化。
这样做的好处使得代码的复用性更高。
继承则是进一步将一类事物共有的属性和行为抽象成一个父类,而每一个子类是一个特殊的父类–有父类的行为和属性,也有自己特有的行为和属性。这样做扩展了已存在的代码块,进一步提高了代码的复用性。
总结就是程序员太懒,用的一种方式再提高代码的复用率
如果说封装和继承是为了使代码重用,那么多态则是为了实现接口重用。多态的一大作用就是为了解耦–为了解除父子类继承的耦合度。如果说继承中父子类的关系式IS-A的关系,那么接口和实现类之之间的关系式HAS-A。简单来说,多态就是允许父类引用(或接口)指向子类(或实现类)对象。很多的设计模式都是基于面向对象的多态性设计的。
例如:我们在给一个方法传参的同时,是传一个实际的子类类型好,还是传一个父类类型好呢,如下代码值 得思考
`public` void add( List 或者 ArryaList){
}
上面的方法参数 应该是父类类型好,提高 了方法的重用性,这也是多态的一种呈现
总结一下,如果说封装和继承是面向对象的基础,那么多态则是面向对象最精髓的理论。掌握多态必先了解接口,只有充分理解接口才能更好的应用多态。