一、面向对象和面向过程
在早期的程序设计中,人们通常使用面向过程的程序设计方式(也称为结构化编程),其更多关注的是对于解决问题的方法的抽象,即通过将具体问题的解决方案抽象为函数(算法),直接调用函数来解决问题。
而面向对象的主要思想在于对问题本身的抽象,即关注问题自身之间的联系,抽象成为对象来解决问题。
举例来说,对于解决“维修工修电脑”的问题。
对于面向过程的程序设计方式,其主要关注的是“修理电脑”的过程,并将“修理电脑”的过程抽象为函数来解决。解决问题的模型为:函数 修电脑(参数 维修工);
对于面向对象的程序设计方式,其主要关注的是“维修工”本身,而“修理电脑”作为“维修工”本身的功能。 解决问题的模型为: 对象 维修工 . 方法 修电脑 ( ) ;
可以发现,面向过程的程序设计方式更接近于机器解决问题的思考方式,面向对象的程序设计方式更接近于人类在日常生活中解决问题的思考方式。在面对大规模的复杂性问题时,使用面向对象的程序设计方式更有利于与程序的理解和后期的维护。注意:面向对象的程序设计方式是基于面向过程的程序设计方式的。是因为在面向对象的程序设计方式中,其对象中方法的实现需要使用面向过程的程序设计方式。
二、类和对象的特征
在面向对象的程序设计中,找出事物的共性并归结为一类事物,可以得到一个类,即类是具有相同属性和方法的一组对象的集合。类的特征有以下三点:
1. 类标识。(用于和其他类进行区分)
2. 属性说明。(用来描述对象的静态特征)
3. 类的方法。(用来描述对象的动态特征)
对象是类的具体表现形式,所以对象也具有以下特征:
1. 对象标识。对象标识分为外部标识和内部标识,外部标识区分对象与对象之间的差异(同一类的实例),内部标识区分类和类之间的差异(不同类的实例)。
2. 属性。(对象拥有的数据,用于描述对象的静态特征)
3. 方法。(对象拥有的操作,用于描述对象的动态特征)
三、面向对象三大特征
面向对象的三大特征:封装、继承、多态。
封装:将数据和方法组合在一个包中,并对对象的使用者隐藏数据的实现方式。
优势:1.只能通过公开的方法访问数据,保证数据的安全性。
2.隐藏数据的实现细节,方便对其修改。
3.高内聚(内部数据操作自己完成,不允许外部干涉)、低耦合(仅暴露少量方法给外部使用)。
继承:从已有类中派生出新的类,新类可以在保留已有类的数据和方法的情况下扩展新的方法。注意对于Java程序中只能有单继承,即一个类只能有一个父类。但Java中的多继承可以通过接口实现。通过继承提高代码的复用性。
多态:对象的多种形态,即程序的最终状态只有在执行过程中才被决定,而非在编译器确定,可以提高系统的灵活性和扩展性。
多态类型:1.引用多态:a.父类引用指向本类对象 b.父类引用指向子类对象。
2.方法多态:a.创建本类对象时,调用本类方法。
b.创建子类对象时,调用子类重写或继承的方法。
多态的必要条件:继承、重写。
//本篇内容部分参考《Java编程思想》以及《Java核心技术 卷一》内容