注:本专栏文章均为本人原创,未经本人授权请勿私自转载,谢谢。
对于传统的面向过程编程,系统被分解成若干个过程,例如我们要比较两个值时:
compare(a, b);
面向对象编程则是在面向过程基础上,将属性(字段) 和行为(方法) 进一步封装为对象,同样,我们要比较两个值时:
a.compareTo(b);
面向对象三大特性
封装
类中可以通过 private/protected 关键字将某些调用方不关心的字段和方法隐藏,仅将 public 标识的字段和方法供外部系统调用。
这样,调用方无需知道该类的具体实现逻辑,同时也可以避免一些私有方法的调用所可能导致的负面结果。
继承
子类可以通过 extends 关键字继承父类的现有功能,而无需再次进行重复实现。提高了软件的重用性。
多态
子类可以对父类现有的方法进行重写改造。
总的来说,方法的重写,重载与动态链接构成多态性。
动态链接:对于父类中定义的方法,如果子类中重写了该方法,那么父类类型的引用将调用子类中的这个方法,这就是动态链接。
优缺点
相比于面向过程,面向对象多了一层抽象,可维护性更强。但由于类调用时需要实例化,开销比较大,性能会相比面向过程低。
所以在互联网项目开发中常用面向对象编程,但对于操作系统等需要高性能的场景,面向过程仍是不可或缺的。