你对OOP的理解?

540 阅读3分钟

你对OOP的理解?

很多程序员在面试过程中都会被问道对面向对象编程编程的理解,而且是无论是初级或是中级还是高级。这是一个简单的问题,很多时候我们仅仅只是照着概念背了一下,然而并没有回答到面试官想要的答案,有的面试官会顺着的回答的结果继续提出问题或者引导你给出想要的答案,而有的面试官则不会。其实这个问题面试官主要是想知道你在实际中的应用及理解,因为只是概念大多数人都能回答上来。所以主要围绕以下两点回答基本上这个问题就差不多了:

  1. OOP概念及你的理解。
  2. OOP的优势及你在实际编程中的应用和理解。

面向对象编程(Object Oriented Programming,缩写OOP)是当今主流的一种程序设计理念和设计规范,OOP把对象作为程序的基本单元,也就是说,在面向对象编程的世界里,万事万物皆对象。一种事物对应一个类,事物的属性定义为变量,事物的行为写成方法,把封装好的对象对外提供访问,提高了软件的重用性、灵活性和扩展性。它取代了早期的"结构化"过程设计开发技术,主张一切皆为对象,程序以人的思维模式去解决问题。对象是把数据及对数据的操作方法放在一起,变为一个相互依存的整体。类就是对同类对象抽象出其共性,即面向对像的程序是由类组成的,每个类包含对用户公开的特定功能部分和隐藏的实现部分。传统的结构化程序设计通过设计一系列的过程(即算法)来求解问题。这一些过程一旦被确定,就要开始考考虑存储数据的方式,这就明确的表述了程序员的工作方式。但面相对像却调换了这个顺序,它不必关心数据对象的具体实现,只要能满足用户的需求即可。面向对象有三个最基本的特性:封装,继承,多态。

封装: 封装是使用方法把类的数据隐藏起来,遵循了Java 一切皆为对象的基本概念和核心思想,达成对类的封装,让普通类型上升为对象级;封装控制用户对类的修改和访问数据的程度,增强了程序的可维护性。

继承: 继承发生在类和类之间,可分为单继承和多层继承描述父子对象之间的关系, 最终达到的目的是:一旦使用了继承,子类便获得了父类所有的成员(变量和方法),但是父类的私有的方法和属性不能被访问,父类的final成员不能被重写。 一旦使用了继承,父类的实例能指向派生类(子类)的引用。

多态: 多态是对象在运行期和编译期具有的两种状态,使代码具有灵活性和重用性。编译时多态,也就是函数重载,所谓函数重载就是指同一个函数名可以对应多个函数的实现具体调用哪个按照由参数个数,参数类型等来决定。运行时多态:用一个基类的指针或引用来操作多个派生类型的能力被称为多态性。