面向对象是软件开发方法,一种编程范式。
面向对象是一种将面向对象的思想应用于软件开发过程并指导开发活动的系统方法。这是一种基于“对象”概念的方法论。对象是由数据和允许的操作组成的包,它与目标实体有直接的对应关系。对象类定义了一组具有类似属性的对象。类的继承是共享具有层次关系的类的属性和操作的一种方式。面向对象是基于对象的概念,以对象为中心,以类和继承为构建机制,认识、理解和描绘客观世界,设计和构建相应的软件系统。
面向对象方法作为一种具有独特优势的新方法,越来越受到世界各国的关注。它被称为“研究高科技的好方法”,是当前计算机界的焦点。在面向对象方法的研究热潮中,许多专家和学者预测,正如结构化方法对计算机技术的应用具有巨大的影响和促进作用一样,面向对象方法将有力地影响、推动和促进一系列高技术的发展和许多学科的综合。
在面向对象方法中,对象和传递消息分别表示事物的概念和事物之间的关系。类继承是一种符合人们一般思维模式的描述性范式。方法是允许对此类对象进行操作的所有类型的操作。对象、类、消息和方法的这种编程范式的基本点在于对象的封装和类的继承。
面向对象是把整个需求按照特点、功能划分,将这些存在共性的部分封装成类(类实例化后才是对象),创建了对象不是为了完成某一个步骤,而是描述某个事物在解决问题的步骤中的行为
优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护
缺点:一般来说性能比面向过程低
封装的概念
封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式
简单的来说就是我将不想给别人看的数据,以及别人无需知道的内部细节, “锁起来” ,我们只留下一些入口,使其与外部发生联系。
封装的好处
隐藏实现细节,提供公共的访问方式,提高了代码的复用性,提高安全性
继承
继承就是在一个已有类的基础上派生出新类(例如动物类可以派生出狗类和猫类),子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为
提高了代码的复用性,提高了代码的维护性(通过少量的修改,满足不断变化的具体要求),让类与类产生了一个关系,是多态的前提。但是缺点也很显著:让类的耦合性增强,这样某个类的改变就会影响其他和该类相关的类。
特点:Java只支持单继承,不支持多继承(C++支持),但是Java支持多层继承(继承体系)形象的说就是:儿子继承爸爸,爸爸继承爷爷,儿子可以通过爸爸继承爷爷。
多态是同一个行为具有多个不同表现形式或形态的能力,例如:黑白打印机和彩色打印机相同的打印行为却有着不同的打印效果,
对象类型和引用类型之间存在着继承(类)/ 实现(接口)的关系;
当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。
如果子类重写了父类的方法,最终执行的是子类覆盖的方法,如果没有则执行的是父类的方法。