`

Java编程那些事儿61—面向对象设计方法和面向对象特性(一)

阅读更多

Java编程那些事儿61—面向对象设计方法

郑州游戏学院 陈跃峰

出自:http://blog.csdn.net/mailbomb

8.4 面向对象设计方法

前面介绍了面向对象技术的两个最基本、最重要的概念——类和对象,下面介绍一下面向对象技术的设计思路。

对于初学者来说,面向对象是学习Java语言时的第一个难点,其实面向对象只是一种思考问题的方式,或者理解为组织数据和功能的方式而已,当系统中的数据和功能都实现以后,按照数据和功能的相关性进行组织。

在使用面向对象技术设计项目时,一般的步骤如下:

1、 抽象类

2、 抽象类的属性和方法

3、 通过对象的关联构造系统

其中步骤12是设计需要实现的功能,步骤3更多的和业务逻辑相关,体现设计的结构不是很多。

l 抽象类

抽象类最基本的方式是——将名词转换为类。

在一个系统中会存在很多的名词,如果这些名词需要频繁的在系统中进行使用时,则可以将这些名词抽象成类,便于后续的时候。例如在一个学生成绩管理系统中,则名词:学生、课程等则可以抽象成类。

而实际在抽象时,由于有一定的主观性,所以在系统设计时,不同人设计的系统会存在一些不同。

l 抽象类的属性和方法

把系统中的类抽象出来了以后,就可以设计每个类的内部结构了,而每个类内部最重要的结构就是属性和方法了。

抽象属性最基本的方式是——将数据抽象为属性。

抽象方法最基本的方式是——将功能抽象为方法。

在一个类内部会存在很多的数据和功能,在实际抽象时,只需要抽象自己需要的数据和功能即可。例如在学生成绩管理系统中,学生的姓名、班级和各个科目的成绩都是系统中需要使用的数据,而学生的家庭住址,联系电话则不会必须的属性,可以根据实际的需要取舍数据的值。

抽象功能时,只需要把该类在系统中需要执行的动作提取出来,然后使用方法的语法进行描述即可。

当然,面向对象设计还涉及很多其它的知识,这里讲解的只是一些基础的入门知识,更多的有关面向对象的知识可以阅读关于面向对象技术的专门书籍,并且在项目开发中逐步体会这些知识。

8.5 面向对象三大特性

面向对象技术在实际开发中有很多的特性,总结起来最核心的特性主要有三个:封装、继承和多态。

8.5.1 封装性

封装性指在实际实现时,将复杂的内部结构隐藏起来,并为这组复杂的结构取一个统一的名称进行使用。在现实世界中,大量的存在封装的例子,例如电脑的硬盘,将多组复杂的线路和存储信息的磁片封装起来,并将该组结构取名为硬盘,以后就可以使用硬盘来代表该结构,而不需要更多的了解内部的信息。

在面向对象技术中,类是典型的封装性的体现,类将一组属性和功能组合成一个统一的结构,并使用类名来代表该结构。

封装性的最大优势在于隐藏每个类的内部实现(内部结构),从而既方便项目的分解也降低了项目的难度。

例如以设计汽车为例,我们可以把汽车看作是软件开发中的整个项目,在实际设计时,首先可以将设计汽车分解为设计汽车的每个组件,然后具体对每个组件进行设计,而组件和组件的设计之间关联性很小,例如设计发动机的设计小组不需要很详细的了解轮胎设计小组的工作。而这里的每个组件可以看作实际面向对象设计中的类,每个类都把自己的内部实现隐藏起来,只通过名称使其它类了解该类的作用,并开放一些基本的功能供其它的类使用即可。

这样可以在实际设计时,每个类都更注重自身的实现,而对于其它类的实现不需要深入了解,这样可以在总体上降低交流的频率,从而降低整个项目的复杂度。

通常情况下,一般把类和类之间的关联性又称作耦合性,类和类之间的关联性比较低也称作耦合性比较低。在实际设计项目时,低耦合的项目是程序设计人员设计系统的目标之一。

8.5.2 继承性

在我们认知现实世界时,一般会把事物进行分类,而每一类内部又划分出很多的小类,生物学中将该方式体现的很彻底。例如猩猩属于动物中的哺乳类灵长目,这里的动物、哺乳类和灵长目都是一个特定的类别,和以前不同的是这些类别之间存在包含关系(is-a),换句话说,也就是哺乳类是动物类的一种,灵长目是哺乳类的一种。

其实在程序设计中,很多设计出来的类也存在这样的包含关系,这样一个类的内部会包含和其它类类似的特征和属性,如果在设计时可以以另外一个类为基础进行设计,那将是多么激动人心的特性,这个特性就是面向对象设计中的继承性。

在一个项目中,如果类和类之间存储包含关系,即一个类是另外一个类的一种,就可以使用继承。

继承性提供了全新的类设计方式,可以充分利用了已有类内部的结构和功能,极大的降低了类内部的代码重复,是设计类的一种显著的变革,对于大型的项目设计十分有用。另外很多技术的应用中也包含大量的继承成分,使整个技术体系比较固定。

8.5.2.1 继承语法

Java语言中,继承的语法格式比较简单,如下所述:

访问控制符 [修饰符] class 类名 extends 父类名{

……

}

在声明类时,声明该类的继承关系,使用extends关键字实现,其中extends关键字前面是声明出的新类名,extends关键字后面的类名是被继承的类名,要求被继承的类名已存在。Java语言采用的是单重继承,也就是说一个类只能有一个直接父类。在类声明时,如果没有使用extends关键字声明父类,则自动继承Object类。说明:Object类是系统提供的类,该类已存在。

示例代码如下:

//Animal.java

public class Animal {

/**类型名称*/

String name;

/**移动方式*/

int moveType;

}

//Mammalia.java

public class Mammalia extends Animal{

/**哺育时间*/

int fosterTime;

}

这里Mammalia类就是Animal类的子类,Animal类就是Mammalia类的父类,子类和父类具有相对性,正如一个祖孙三代的家庭内部,每个人相对于不同的人扮演不同的角色一样。同时类和类之间的继承具备传递性,就如现实中的血缘关系一样。

8.5.2.2 继承说明

两个类之间如果存在了继承关系以后,将带来哪些不同呢?下面依次来进行说明:

l 子类拥有父类的所有属性

子类中继承父类中所有的属性,在父类中声明的属性在子类内部可以直接调用。说明:如果访问控制符限制则无法访问。

l 子类拥有父类的所有方法

子类中继承父类中所有的方法,在父类中声明的方法在子类内部可以直接调用。说明:如果访问控制符限制则无法访问。

l 子类不拥有父类的构造方法

子类不继承父类的构造方法,如果需要在子类内部使用和父类传入参数一样的构造方法,则需要在子类内部重新声明这些构造方法。

l 子类类型是父类类型

子类类型的对象可以自动转换为父类类型的对象,父类类型的对象则需要强制转换为子类的对象,转换的语法个基本数据类型转换的语法相同。

分享到:
评论

相关推荐

    Java编程那些事儿

    Java编程,作为全球最流行的...总之,“Java编程那些事儿”可能涵盖了上述所有内容,旨在为开发者提供一个全面的Java学习指南。通过深入理解和实践这些知识点,开发者不仅能提升个人技能,还能更好地应对各种项目挑战。

    java编程那些事儿

    ### Java编程那些事儿 #### 程序设计概述与核心要素 **程序设计**,作为一项专业技能,涉及将现实世界的问题转化为计算机可执行的指令序列。它不仅仅是一门技术,更是一种思维方式的体现。本章节将从三个方面展开...

    Java编程那些事儿系列文章.pdf(全)

    《Java编程那些事儿》系列文章,由IT教育专家陈跃峰撰写,旨在通俗易懂地讲解Java编程的基础知识与实践技巧,特别强调了程序设计的基本概念及其对初学者的重要性。以下是从该系列文章中提炼出的关键知识点: ### ...

    java编程那些事儿-陈跃峰31-70

    《Java编程那些事儿》是陈跃峰先生的一本关于Java编程技术的著作,虽然在网络上可能难以找到完整的电子版,但通过你提供的文件名列表,我们可以梳理出一系列关键知识点,这些都是学习Java编程过程中不可或缺的部分。...

    java程序员的那些事儿

    初学者应该掌握基本语法、面向对象编程概念(如封装、继承和多态)、异常处理、集合框架(如ArrayList、LinkedList、HashMap等)以及I/O流。 其次,理解JVM(Java虚拟机)的工作原理至关重要。Java程序在JVM上运行...

    java那些事儿chm

    《Java那些事儿》是一部深入探讨Java编程语言的综合性资料,主要以CHM(Microsoft Compiled HTML Help)格式提供。CHM是一种常见的电子书格式,它将HTML文档、图像和其他资源组合成一个单一的压缩文件,方便用户离线...

    java那些事儿

    Java那些事儿,这是一个专为Java初学者准备的学习资源,涵盖了丰富的知识内容,旨在帮助新接触Java编程的人士快速上手并深入理解这门强大的编程语言。在这个压缩包中,我们有两份重要的文件:《Java编程那些事儿》的...

    编程的那些事儿.pdf

    综上所述,《编程的那些事儿》一书通过作者的独特视角探讨了编程领域的多个重要概念和技术,包括抽象思维、设计的重要性、类型设计以及面向对象编程等。这些观点对于初学者和有经验的开发者来说都具有很高的参考价值...

    Java程序员上班那点事儿

    2. **面向对象编程**:Java是一种面向对象的语言,因此会详细介绍类、对象、继承、封装和多态等概念,这些都是理解Java设计模式的关键。 3. **异常处理**:如何有效地捕获和处理程序运行时可能出现的错误,确保程序...

    Java程序员+上班那点事儿

    2. **面向对象编程**:Java是一种强面向对象的语言,书中会深入探讨如何设计和实现良好的面向对象系统,包括接口、抽象类、封装、模块化设计原则以及设计模式的应用。 3. **异常处理**:Java中的异常处理是程序健壮...

Global site tag (gtag.js) - Google Analytics