面向对象基本概念
面向对象基本概念
面向对象与面向过程的区别
面向对象其实是相对于面向过程而言的,面向过程是指按照事情的过程,一步一步的执行,所有的操作都将是一个整体,像我们了解到C语言就是面向过程的。
而面向对象就是一种对现实世界理解和抽象的方法,把相关的数据和方法组织为一个整体来看待,从更高的层次来进行系统建模,更贴近事务的自然运作模式。Java和C++就是面向对象语言。
项目名称 | 面向对象程序设计 | 面向过程程序设计(也叫结构化编程) |
---|---|---|
定义 | 面向对象顾名思义就是把现实中的事务都抽象成为程序设计中的“对象”,其基本思想是一切皆对象,是一种“自下而上”的设计语言,先设计组件,再完成拼装。 | 面向过程是“自上而下”的设计语言,先定好框架,再增砖添瓦。通俗点,就是先定好main()函数,然后再逐步实现mian()函数中所要用到的其他方法。 |
特点 | 封装、继承、多态 | 算法+数据结构 |
优势 | 适用于大型复杂系统,方便复用、 | 适用于简单系统,容易理解 |
劣势 | 比较抽象、性能比面向过程低 | 难以应对复杂系统,难以复用,不易维护、不易扩展 |
对比 | 易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统 更加灵活、更加易于维护 | 性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、 Linux/Unix等一般采用面向过程开发,性能是最重要的因素。 |
对象与类的区别
类是一个模板,他描述一类对象的行为和状态,如动物、人
对象是类的一个实例,如教师就是人的一个实例化,猫就是动物的一个实例化
面向对象的三大主要特征
封装、继承、多态
1.封装
封装就是一个盒子,将对象的属性和行为看作一个密不可分的整体,不可分割,并且将信息隐藏起来,外界可以了解使用该信息,但是不能改变
封装的优点
- 良好的封装能够减少耦合,符合程序设计追求“高内聚,低耦合”。
- 类内部的结构可以自由修改。
- 可以对成员变量进行更精确的控制。
- 隐藏信息实现细节。
2.继承
继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
Java与C++的区别:C++可以多继承,而Java是单继承
多继承就是一个对象有两个父类,如孩子有一个爸爸,一个妈妈,孩子会继承爸爸和妈妈的行为及属性
继承的好处
-
提高类代码的复用性
-
提高了代码的维护性
-
使得类和类产生了关系
3.多态
多态是同一个行为具有多个不同表现形式或形态的能力。
多态的两种形式:
-
方法重载(类内的方法重载):在一个类中,允许多个方法使用同一个名字,但方法的参数不同,完成的功能也不同。
-
对象多态(重写父类的方法):子类对象可以与父类对象进行转换,而且根据其使用的子类不同完成的功能也不同(重写父类的方法)。