设计模式篇-面向对象是什么,有哪些特性?

120 阅读2分钟

写作背景:今天电话面试被问道面向对象是什么?你对面向对象的有哪些理解?

答的支支吾吾的,具体概念不清楚,打的不太好。

什么是面向对象?

在编写代码解决具体的需求的时候,我们将一些功能编写成一个类。类中包含属性和方法,然后创建一个对象,用对象具体的方法和属性去解决一些问题。重要的类和对象,类中包含属性和方法。

为什么要面向对象编程呢?

因为面向对象编程,代码易维护、易拓展、易复用。

面向对象有哪些特性?

1:封装性 就是将一个类的使用和实现分开,只保留部分接口和方法与外部联系,或者是指公开一些方法供开发人员使用。开发人员只关心类如何使用,而不去关心其具体的实现过程,这样就能实现程序之间的相互依赖,让代码模块之间松耦合。

2:继承性 就是子类自动继承其父类中的属性和方法,并可以添加新的属性和方法或者对父类部分属性和方法进行重写。继承增加了代码的可重复性。PHP只支持但继承,一个类只能继承一个父类。

3:多态性 子类继承来自父类中的属性和方法,并对其中部分方法进行重写。于是多个子类中虽然具有同一个方法名,但是这些子类实例化的对象调用这些相同的方法后确可以获得完全不同的结果,这种技术就是多态性,多态性增强了软件的灵活性。

五大基本原则

1:单一职责原则 SRP (Single Responsibility Principle) 是指一个类的功能要单一,不能一个类包含处理各种方法。 2:开放封闭原则OCP(Open-close Principle) 是指一个模块在拓展方面应该是开放的而在更改方面应该是封闭的。 3:里式替换原则LSP(The Liskov Subtitution Principle LSP) 子类应该可以替换父类并出现在父类能够出现的任何地方。 4:依赖倒置原则DIP(the Dependency inversion Principle DIP) 具体依赖抽象,上层依赖下层。 5:接口分离原则ISP(the interface segregation principle ISP) 模块间要通过抽象接口隔离开,而不是通过具体的类强耦合。