Java面向对象编程的三大特性
2020-01-18岳青玲
文/岳青玲
面向对象是当前Java和C#等主流编程语言共同的特点。面向对象存在软件开发过程中的每个阶段。其中包含了面向对象分析(OOA)、面向对象设计(OOD)和面向对象编程(OOP),上述几个方面形成了完整的软件工程核心理论、方法以及工具。在学习Java的过程中,首先接触的就是相关的基本概念,经过此模块的系统学习后,我们可以正确的认知对象并进行使用,在面向对象的学习过程中有很大的推进作用。本文对Java的三大特性:封装、继承、多态进行详细的解释和举例,对理解学习面向对象思想和后续的学习有较大的帮助。
1 Java封装
1.1 封装的概念
面向对象设计方法的第一大特性--封装,该特性是指把抽象的函数接口的具体实现细节当作一个包,将其包装并且隐藏起来。
(1)定义:将对象的属性和具体细节打包隐藏,对外使用时只能看到相应的接口,来执行对属性的可读及修改的访问权限。
(2)目的:增加程序的安全级别,降低后续的编程复杂度,程序的使用者不需要了解实现的细节,只需要了解它的外部接口,来进行对该类的使用。
(3)基本要求:将属性进行私有化操作,对每个属性创建set和get方法,如果这里存在一个带参数的构造函数,以此同时就必须存在一个不带参数的构造函数。在后续的开发阶段需要对已经存在的类测试,因此有时还需要写toString方法,虽然不是强制的。
1.2 封装的优点
(1)优秀的封装使用可以低耦合。
(2)类的内部结构可以根据实际需求进行更改。
(3)对成员变量的调控变得更精准。
(4)隐藏不需要外部了解的细节。
1.3 实现Java封装的步骤
修改属性的可见性来限制对属性的访问(一般限制为private),例如:
public class Someone {
private String name;
private String gender;}
上述例子,把 name 和 gender属性设定为private,只有该类才可以执行此方法,因此可以认定把细节模糊处理。
表1:类成员修饰符与访问能力之间的关系(类成员访问权限)
表2:继承和权限
其次,再将上述方法中的值都封装起来,并设置为一个方法,外部如果想使用该值时,可以用过调用该方法来使用其中的值,这样做可以对一些私有属性进行访问。
2 继承
2.1 目的
实现代码的复用。
2.2 介绍
两个类存在同样的属性和同样的方法名称时,可以把两个类中共同的部分提取出来,新建类为父类,之前的两个类来继承这个类进而使用方法。进行继承操作后,子类自动拥有了父类的属性和详细方法,但是父类存在private的属性和方法,子类不能够继承。除此之外,子类可以再次编写自己特有的属性和方法,目的就为了后续开发过程中功能的扩展,子类也可以复写方法。如表1、表2所示。
继承是面向对象最显著的一个特性。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。
在Java之中,实现继承,可以参考以下例子:
class 子类 extends 父类 {}
子类可以叫继承类(派生类); 父类可以叫超类(Super Class)。
观察继承的基本实现:
运行结果:类别:哺乳动物,数量:6
通过代码可以发现,子类(Student)并没有定义任何的操作,而在主类中所使用的全部操作都是由Person类定义的,这证明:子类即使不扩充父类,也能维持父类的操作。
3 多态
3.1 概念
同样的事物处理,使用的方法为同一个方法,方法中的参数也相同,但是最后表现的结果不同。
3.2 Java如果想实现多态必须存在以下几个条件才可以成功实现
继承:在多态的管理网中必须要有存在继承关系的子类和父类。
重写:子类会针对父类中的一些特点方法进行自定义,后续在使用这些方法时会调用子类中重写的方法。
向上转型:在多态当中需要把子类引用的对象赋值给到父类,只有这样做才能达到可以调用父类、子类方法的目的。
满足了以上的几个条件,我们可以在同一个继承的结构中使用统一逻辑代码,进而去处理不同类别的对象,进而达到执行不同方法的目的。
3.3 多态的实现方式
3.3.1 基于继承实现的多态
基于继承来实现多态,该方法主要表现在父类和继承该父类的不同子类对这些方法进行重写,多个子类进行重写,后续调用时可以执行不同的行为。
3.3.2 基于接口实现的多态
继承是通过重新编写父类的同一个方法中的不同的子类来实现的,如果这样做的话就是覆盖接口来实现多态。
4 Java三大特性总结
4.1 封装的优点
(1)提高了安全性,防止一些误操作。
(2)提高了复用性,封装之后便于调用。
(3)信息隐藏,隐藏了实现细节。
4.2 继承的优点
(1)继承可提高代码的复用性。
(2)继承可提高代码的稳定性。
(3)继承让类与类之间产生关系,是多态的前提。
4.3 多态性优点
(1)提高了代码的维护性(继承保证)。
(2)提高了代码的扩展性(由多态保证)。
封装->继承->多态这不单单是三个名词的简单罗列,更是一步步递进的关系。对于面向对象的程序设计,封装是基础,继承是多态的前提条件,三者逻辑顺序不可颠倒。
5 结论
通过上述可以理解面向对象的中心思想就是正确的理解对象的概念,还有对象到类、类到接口等过程。面向对象开发思想的三大特性包括封装、继承与多态,Java的三大特性在初次学习和后续开发阶段,这些特性都是与开发息息相关的,在分析设计类的过程中让代码之间变得低耦合、高内聚,进而提升代码的复用性。
Java程序在执行过程中,正确的认知对象的整个声明周期和后续在实际的开发过程中正确的使用它们,是在编写的效率方面有极大帮助的。因此从理解对象的概念、学习对象的使用为起点,后续进行面向对象的分析、开发过程,在实践过程中才能更迅速的提高对整个系统的分析、设计能力。