1、写在前面
Java是纯面向对象语言,具备面向对象的编程思想,对学习和使用Java进行产品开发尤为重要。本文将重点谈谈面向对象的特征以及面向对象编程需要遵循的原则。
2、何为对象?
我们生活中接触的万事万物都是对象,一切对象都有自己属性和行为。比如:人具备的身高、性别、生日、爱好、国籍等属性,同时具有吃饭、睡觉、学习、走路等行为。在软件开发过程中,把产品需求里面涉及的对象抽象出来,分析对象之间的关系尤为重要。比如在订单系统中,分析出订单和订单明细两个对象的属性和行为以及他们是一对多的关系,成为后续的数据库设计和编码的重要依据。
3、何为面向对象编程
面向对象编程是将客观世界中的事物描述为对象,并通过抽象思维方法将需要解决的实际问题分解为人们易于理解的对象模型,然后通过这些对象模型来构建应用程序的功能。
相对于Java语言,掌握类和对象这两个概念,对理解和掌握面向对象编程思想非常重要的。类是对象的模板,是一类对象的状态和行为。对象是具体实物,有状态和行为,是类的实例。通过以下的实例来理解类和对象的实现以及它们之间的关系:
狗类是具体具体狗的一个模板,定义了不同品种狗共有的属性和行为,斗牛犬、小猎犬、牧羊犬是具体狗的品种,是狗类的具体对象,具备具体的特征和行为。将狗类及其对象(具体品种)用Java语言表达如下:
狗类:
狗类的对象:
4、面向对象的三大特征
我们需要学好Java编程,必须要掌握面向对象的三大特征:封装、继承和多态
先看封装。封装特性要求代码隐藏对象的属性和实现细节,仅对外提供公共访问方式。比如以上的狗类(Dog)代码,成员变量breed、size、age都使用了private修饰符,对外提供访问它们的是get和set方法。
再看继承。子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。比如以下例子,学生类继承了人类,学生类就拥有了人类定义的属性。
最后看多态。多态特性是指同一个行为具有多个不同表现形式或形态的能力,Java中主要表现为重载和重写。比如以下的例子,订单保存动作可以选择保存到MongoDB或者MySQL,即一个保存动作,可以将订单信息保存到不同的数据库。
5、面向对象编程的七大原则
开闭原则
一个软件实体,如类,模块和函数应该多外扩展开发,对内修改关闭。即不修改原有代码的前提下给程序扩展功能,增加了程序的可扩展性。
单一职责原则
一个类只允许有一个职责,即只有一个导致该类变更的原因
依赖倒置原则
依赖抽象而不是依赖实现,高层模块不能依赖底层模块,即针对接口编程,而不是针对实现编程,通过抽象搭建框架,建立类与类的关联,以减少类间的耦合性。
接口分离原则
多个特定的客户端接口要好于一个通用性的总接口;避免用一个接口里面包含不同职责的方法,接口责任划分更加明确。
迪米特法则
一个对象应该对尽可能少的对象有接触,只接触那些真正需要接触的对象。
里氏替换原则
所有引用基类的地方必须能透明地使用其子类的对象,而程序执行效果不变。可以检测继承使用的正确性。
合成复用原则
尽量使用合成/聚合的方式,而不是使用继承。
6、写在结尾
面向对象编程及其思想,不是仅仅停留在概念上,而是通过编程实践,不断深化其特性和编码原则的理解。思想是行动的指南,相信大家在面向对象编程思想的指引下,能写出安全、可靠、可重用、易扩展、可读性强的优雅代码。