`

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

    面向对象的简、由类创建一个对象的方法、类的编写与对象的创建、类的构造函数、类的方法、修饰符、Java中的封装/继承/多态等特征、Java中的线程、用Java创建一个小世界、多线程共享数据,以及面向对象中的各种设计...

    面向对象实验通过编程和上机实验理解 Java 语言是如何体现面向对象

    通过编程和上机实验理解 Java 语言是如何体现面向对象编程基本思想,了解类的封装方法,以及 如何创建类和对象,了解成员变量和成员方法的特性,掌握 OOP 方式进行程序设计的方法。 【实验原理】或 【实验任务】 ...

    java面向对象课程设计(有程序和报告)

    Java面向对象课程设计 有程序和报告

    第13章-Java网络编程-Java面向对象程序设计教程-微课视频版-程杰-清华大学出版社.pptx

    JAVA 面向对象程序设计教程 第13章 Java网络编程 第13章-Java网络编程-Java面向对象程序设计教程-微课视频版-程杰-清华大学出版社全文共17页,当前为第1页。 第13章 Java网络编程 第13章-Java网络编程-Java面向对象...

    JAVA编程基础-06面向对象高级特性-zhouxl.pdf

    JAVA编程基础-06面向对象高级特性-zhouxl.pdf

    Java与UML面向对象程序设计.pdf

    《Java与UML面向对象程序设计》旨在介绍使用Java和UML开发面向对象的软件所必需的知识,并将伴您走上使用Java进行真正面向对象软件开发的道路。《Java与UML面向对象程序设计》共分12章。《Java与UML面向对象程序设计...

    java面向对象编程指南

    本书将面向对象的基木概念和Java程序设计语言原理有机地结合起来,通过对象概念加深对Java程序设计语言基本机制的理解,通过Java语言又生动地描绘出面向对象思想的实用价值,这是一本相当新颖的Java和面向对象问题的...

    习题解答-Java面向对象程序设计-邢国波-清华大学出版社.pdf

    习题解答-Java面向对象程序设计-邢国波-清华大学出版社.pdf习题解答-Java面向对象程序设计-邢国波-清华大学出版社.pdf习题解答-Java面向对象程序设计-邢国波-清华大学出版社.pdf习题解答-Java面向对象程序设计-邢...

    java面向对象编程pdf

    java面向对象编程pdf

    Java面向对象编程练习题.pdf

    Java面向对象编程练习题.pdf

    Java面向对象精髓编程

    0基础学Java,从最简单的HelloWorld到网络编程,反射,OOAD初步,手把手教你学Java

    Java面向对象编程思想

    Java 的核心是面向对象编程.所有的java程序都是面向对象的。 以前总听老师说c语言是面向过程的,c++和java是面向对象的,这些糊涂老师却从来不说明何为面向过程,何为面向对象,搞得我一直对此稀里糊涂。 最近看了...

    java 门禁系统的面向对象设计

    java 门禁系统的面向对象设计. java 门禁系统的面向对象设计. 门禁系统的面向对象设计. 门禁系统的面向对象设计.

    java面向对象程序设计

    全书共13章,内容包括Java介绍、面向对象编程中的对象、由对象展开的Java基本数据类型、运算符、数组、方法、类的定义、对象的使用、Java类库、继承、接口、多态、异常处理、可视化程序开发、多线程等。本书重点落在...

    《Java面向对象编程》练习题

    《Java面向对象编程》 练习题一、填空题 1.自从Sun推出Java以来,按应用范围可分为三个版本,分别是( JAVA SE )、( JAVA EE )、( JAVA ME )。 2.环境变量的设置,若JDK安装在“D:\JDK”,则应设置Path为(D:...

    Java面向对象编程指南

    Java面向对象编程指南

    面向对象编程(Java).pdf

    包含面向对象编程所有基础知识和实战代码

    Java面向对象程序设计

    《Java面向对象程序设计》和《Java面向对象程序设计习题解答与实验》,使用超星阅读器浏览,仅供学习和参考使用。

    Java面向对象的思维方法

    我是从学习Java编程开始接触OOP(面向对象编程),刚开始使用Java编写程序的时候感觉很别扭,因为我早以习惯用C来编写程序,很欣赏C的简洁性和高效性,喜欢C简练而表达能力丰富的风格,特别忍受不了Java运行起来慢吞吞...

Global site tag (gtag.js) - Google Analytics