如何正确的理解面向对象编程

63 阅读1分钟

注:本专栏文章均为本人原创,未经本人授权请勿私自转载,谢谢。

对于传统的面向过程编程,系统被分解成若干个过程,例如我们要比较两个值时:

compare(a, b);

面向对象编程则是在面向过程基础上,将属性(字段)行为(方法) 进一步封装为对象,同样,我们要比较两个值时:

a.compareTo(b);

面向对象三大特性

封装

类中可以通过 private/protected 关键字将某些调用方不关心的字段和方法隐藏,仅将 public 标识的字段和方法供外部系统调用。

这样,调用方无需知道该类的具体实现逻辑,同时也可以避免一些私有方法的调用所可能导致的负面结果。

继承

子类可以通过 extends 关键字继承父类的现有功能,而无需再次进行重复实现。提高了软件的重用性。

多态

子类可以对父类现有的方法进行重写改造。

总的来说,方法的重写重载动态链接构成多态性。

动态链接:对于父类中定义的方法,如果子类中重写了该方法,那么父类类型的引用将调用子类中的这个方法,这就是动态链接。

优缺点

相比于面向过程,面向对象多了一层抽象,可维护性更强。但由于类调用时需要实例化,开销比较大,性能会相比面向过程低。

所以在互联网项目开发中常用面向对象编程,但对于操作系统等需要高性能的场景,面向过程仍是不可或缺的。