Java面向对象编程基础_第1页
Java面向对象编程基础_第2页
Java面向对象编程基础_第3页
Java面向对象编程基础_第4页
Java面向对象编程基础_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 淮海工学院淮海工学院 计算机课程第第3章章 Java面向对象编程基础面向对象编程基础3.1面向对象软件开发概述面向对象软件开发概述3.2 Java的类的类3.3 构造方法与对象的创建构造方法与对象的创建3.4 定义和使用定义和使用Java的方法的方法3.5 内部类与匿名类内部类与匿名类 淮海工学院淮海工学院 计算机课程学习要点:学习要点:1.1.理解面向对象程序设计的基本概念理解面向对象程序设计的基本概念2.2.理解理解JavaJava包中类的基本概念,掌握定义包中类的基本概念,掌握定义JavaJava类和创类和创建对象的方法建对象的方法3.3.掌握构造函数:构造函数的特点、构造函数的定义掌

2、握构造函数:构造函数的特点、构造函数的定义4.4.掌握方法的定义,理解方法的形式参数与实际参数、掌握方法的定义,理解方法的形式参数与实际参数、方法的返回值、方法的调用过程方法的返回值、方法的调用过程5. 5. 了解内部类和匿名类的定义与使用方式了解内部类和匿名类的定义与使用方式 淮海工学院淮海工学院 计算机课程3.1 面向对象软件开发概述面向对象软件开发概述 面向对象程序设计面向对象程序设计是一种运用是一种运用对象、类、继承对象、类、继承、封装、聚合、关联、消息、多态性、封装、聚合、关联、消息、多态性等概念来等概念来构造系统的软件开发方法,其核心思想是用面构造系统的软件开发方法,其核心思想是用

3、面向对象的编程语言把向对象的编程语言把现实世界的实体现实世界的实体描述成计描述成计算机能理解、可操作的、算机能理解、可操作的、具有一定属性和行为具有一定属性和行为的对象的对象,将数据及数据的操作封装在一起将数据及数据的操作封装在一起,通,通过调用对象的不同方法来完成相关事件。过调用对象的不同方法来完成相关事件。 淮海工学院淮海工学院 计算机课程对象、实体与类对象、实体与类 淮海工学院淮海工学院 计算机课程设计方法设计方法特点特点代表性语言代表性语言面向机器面向机器用机器指令为特定硬件系统编制程序,用机器指令为特定硬件系统编制程序,其目标代码短,运行速度和效率高,但其目标代码短,运行速度和效率高

4、,但可读性和移植性差。可读性和移植性差。86系列汇编语言系列汇编语言面向过程面向过程用高级程序设计语言按计算机能够理解用高级程序设计语言按计算机能够理解的逻辑来描述要解决的问题及其解决方的逻辑来描述要解决的问题及其解决方法,是过程驱动的,程序的可读性和移法,是过程驱动的,程序的可读性和移植性好,核心是数据结构和算法。但植性好,核心是数据结构和算法。但大大型程序维护起来比较困难。型程序维护起来比较困难。Fortran(50年代)年代) Basic(60年代)年代)C(70年代)年代)面向对象面向对象用面向对象的编程语言把现实世界的实用面向对象的编程语言把现实世界的实体描述成计算机能理解、可操作的

5、、具体描述成计算机能理解、可操作的、具有一定属性和行为的对象,将数据及数有一定属性和行为的对象,将数据及数据的操作封装在一起,通过调用各对象据的操作封装在一起,通过调用各对象的不同方法来完成相关事件,是事件驱的不同方法来完成相关事件,是事件驱动的,其核心是类和对象,程序易于维动的,其核心是类和对象,程序易于维护护 、扩充。、扩充。C+(80年代)年代)VB (90年代)年代)Object Pascal (90年代)年代)Java( 90年代)年代)3.1.1 程序设计方法的发展程序设计方法的发展 淮海工学院淮海工学院 计算机课程3.1.2 面向对象的几个基本概念面向对象的几个基本概念 对象(对

6、象( Object ):):系统中用来描述客观事物的一个系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。实体,它是构成系统的一个基本单位。由一组属性和由一组属性和施加于该组属性的一组操作构成。对象可以是有形的施加于该组属性的一组操作构成。对象可以是有形的事物,例如一台电脑;也可以是无形的事物,例如一事物,例如一台电脑;也可以是无形的事物,例如一项工作计划。项工作计划。 类(类( Class ):):是具有相同属性和操作的一组对象是具有相同属性和操作的一组对象的集合,它为属于该类的全部对象提供了统一的抽象的集合,它为属于该类的全部对象提供了统一的抽象描述,它由一个类名、一组属性和一

7、组操作构成。描述,它由一个类名、一组属性和一组操作构成。 淮海工学院淮海工学院 计算机课程 属性(属性( Property ):):是对象的特征,包括状态是对象的特征,包括状态和行为。和行为。 事件事件(Event)由对象识别的一个外部动作由对象识别的一个外部动作属性属性动态属性动态属性“行为行为”,用,用方法方法表示表示静态属性静态属性“状态状态”,用,用变量变量表示表示类类是一个抽象的概念,表示一个有共同特征的对是一个抽象的概念,表示一个有共同特征的对象集合象集合。对象。对象是一个具体的概念,它是类的一个是一个具体的概念,它是类的一个具体的实例具体的实例。类的作用是创建对象。类是创建对象的

8、模板,对类的作用是创建对象。类是创建对象的模板,对象是类的一个实例。象是类的一个实例。 淮海工学院淮海工学院 计算机课程类与对象的关系类与对象的关系“人人”类和对象类和对象“李四李四”的关系的关系 淮海工学院淮海工学院 计算机课程如何理解如何理解 “对象对象”? 对象的行为是什么?对象的行为是什么?方法方法 对象的状态是什么?对象的状态是什么?属性属性 对象的身份是什么?对象的身份是什么?名称名称 状态可能影响行为状态可能影响行为 每个对象每个对象“总是总是”有不同的身份,一个有不同的身份,一个类的多个对象类的多个对象“可能可能”有不同的状态有不同的状态 名称也叫名称也叫“引用引用”三方三方面

9、特面特征征 淮海工学院淮海工学院 计算机课程 包含包含当对象当对象A是对象是对象B的属性时,称对象的属性时,称对象B包含对象包含对象A; 如:发动机与汽车,如:发动机与汽车, CPU与计算机与计算机 继承继承当对象当对象A是对象是对象B的特例时,称对象的特例时,称对象A继承了对象继承了对象B 如:北京大学和大学,液晶显示器和显示器如:北京大学和大学,液晶显示器和显示器 关联关联当对象当对象A的引用是对象的引用是对象B的属性时,称对象的属性时,称对象A和对象和对象 B之间是关联关系。之间是关联关系。 如如:汽车与制造商汽车与制造商对象的之间关系对象的之间关系 淮海工学院淮海工学院 计算机课程继承

10、性继承性(inheritance) 自动地共享具有层次关系的类自动地共享具有层次关系的类(子类子类)和对象中的方和对象中的方法和数据的机制。法和数据的机制。 当类当类Y继承类继承类X时,就表明类时,就表明类Y是类是类X的子类,而类的子类,而类X是类是类Y的超的超/父类。类父类。类Y由两部分组成:继承部分和增由两部分组成:继承部分和增加部分。加部分。增加部分是专为增加部分是专为Y编写的新代码;继承部分可以是编写的新代码;继承部分可以是简单的等同,也可以更为丰富:如对性质重命名、重简单的等同,也可以更为丰富:如对性质重命名、重实现、复制、置空等。实现、复制、置空等。XY继承部分继承部分 增加部分增

11、加部分 Y继承X 淮海工学院淮海工学院 计算机课程继承方式:继承方式:简单继承简单继承(single inheritance):一个类至多只能继一个类至多只能继承一个承一个 类类(树结构树结构)。多重继承多重继承(multiple inheritance):一个类直接继承一个类直接继承多个超多个超 类类(网状结构网状结构)。类Y1,Y2简单继承类XXYY2Y1X1X2类Y多重继承类X1,X2 淮海工学院淮海工学院 计算机课程例:一个图形系统例:一个图形系统()Figure Line Ellipse Polygon Close Figure Open Figure Pentagon Triang

12、le Rectangle Circle Arc (象素宽度,颜色,平移,旋转)(填充,边界,周长,面积)(长度) 淮海工学院淮海工学院 计算机课程3. 1.3 面向对象的软件开发过程面向对象的软件开发过程 面向对象的软件开发过程可以大体划分为三个阶段:面向对象的软件开发过程可以大体划分为三个阶段: 面向对象的分析(面向对象的分析(object oriented analysis,OOA) 面向对象的设计(面向对象的设计(object oriented design,OOD) 面向对象的实现(面向对象的实现(object oriented programming,OOP)。)。 淮海工学院淮海工

13、学院 计算机课程(1) 面向对象的分析(面向对象的分析(OOA object oriented analysis)主要作用:主要作用: 明确用户的需求,并用标准化的面向对象的模型规明确用户的需求,并用标准化的面向对象的模型规范地表述这一需求,最后将形成面向对象的分析模型,范地表述这一需求,最后将形成面向对象的分析模型,即即OOA模型。分析阶段的工作应该由用户和开发人模型。分析阶段的工作应该由用户和开发人员共同协作完成。员共同协作完成。 面向对象的分析首先应该明确用户的需求,然后再面向对象的分析首先应该明确用户的需求,然后再将这些需求以标准化模型的形式规范地表述出来,即将这些需求以标准化模型的形

14、式规范地表述出来,即将用户和开发人员头脑中形成的需求以准确的文字、将用户和开发人员头脑中形成的需求以准确的文字、图表等形式表述出来,形成双方都认可的文件。图表等形式表述出来,形成双方都认可的文件。 淮海工学院淮海工学院 计算机课程使用使用OOAOOA的原因如下:的原因如下:(1 1)它使我们能在人类概括客观事物的三个基本方法()它使我们能在人类概括客观事物的三个基本方法(对象及对象及属性属性、一般一般特殊特殊结构和结构和部分部分整体整体结构)的框架上进行定义和结构)的框架上进行定义和交流。交流。(2 2)它首先着眼于问题空间的理解。)它首先着眼于问题空间的理解。(3 3)它将属性及专用于那些属

15、性的方法视为一个固有的整体。)它将属性及专用于那些属性的方法视为一个固有的整体。(4 4)使用自包含分块)使用自包含分块( (对象之间依赖性最小对象之间依赖性最小) )进行分析和说明。进行分析和说明。(5 5)它提供一个支持分析和设计一致的强有力的表示工具。)它提供一个支持分析和设计一致的强有力的表示工具。(6 6)它能适应系列变化的系统和对当前实际运行系统的调整。)它能适应系列变化的系统和对当前实际运行系统的调整。 淮海工学院淮海工学院 计算机课程常使用的常使用的OO(OO(描述描述) )方法有多种:方法有多种:BoochBooch Booth Booth 方法方法 (86(86年年) )

16、Coad & yourdon 方法 (90年)James James RumbaughRumbaugh ( (OMT) )方法方法 (91(91年年) )Berard Berard 方法方法Fire Smith Fire Smith 方法方法JacobsonJacobson ( (OOSE) ) 方法方法Martin-Odeu Martin-Odeu 方法方法Seidewitz-Stark Seidewitz-Stark 方法方法Shlaer-Mellor Shlaer-Mellor 方法方法Wirfs-Brook Wirfs-Brook 方法方法UMLUML(Unified Modeling

17、 LanguageUnified Modeling Language)方法)方法 淮海工学院淮海工学院 计算机课程Coad & Yourdon 的的OOA模型的模型的5个层次个层次对象对象类层:类层:找到要开发的应用软件所对应的各个现找到要开发的应用软件所对应的各个现实世界的实体,并从中抽象出类和对象。实世界的实体,并从中抽象出类和对象。静态属性层:静态属性层:为对象为对象类层中抽取出来的各个类和对类层中抽取出来的各个类和对象设计静态属性和它们之间的约束关系。象设计静态属性和它们之间的约束关系。服务层:服务层:定义对象和类的动态属性以及对象之间的消定义对象和类的动态属性以及对象之间的消息通信。

18、息通信。结构层:结构层:定义系统中所有对象和类之间的层次结构关定义系统中所有对象和类之间的层次结构关系。系。主题层:主题层:将系统定义为若干主题(即子系统),把有将系统定义为若干主题(即子系统),把有关对象划归不同的主题。关对象划归不同的主题。 淮海工学院淮海工学院 计算机课程 从面向对象的分析到面向对象的设计从面向对象的分析到面向对象的设计OOAOOA的各层模型化了的各层模型化了“问题空间问题空间”, , 而作为而作为OOAOOA各各层扩充的层扩充的OOD, OOD, 则模型化一个特定的则模型化一个特定的“实现空间实现空间”。这种扩充主要是从增加属性和方法开始的。这种扩充主要是从增加属性和方

19、法开始的。OOAOOA是独立于程序设计语言的是独立于程序设计语言的, , 初步的初步的OODOOD在很大在很大程度上依然独立于程序设计语言,而详细程度上依然独立于程序设计语言,而详细OODOOD是依赖是依赖于语言的于语言的, , 并可有效地应用过程式、函数式和面向并可有效地应用过程式、函数式和面向对象的程序设计语言加以实现。语言的选择对对象的程序设计语言加以实现。语言的选择对OODOOD的的实施有重要的影响实施有重要的影响, , 但不会影响但不会影响OODOOD的有效性。的有效性。 淮海工学院淮海工学院 计算机课程(2) 面向对象的设计(面向对象的设计(OOD object oriented

20、design) 概要设计概要设计构成最初的构成最初的OOD模型模型 OOA模型模型 界面管理:负责整个系统的人机交互界面的设计界面管理:负责整个系统的人机交互界面的设计 任务管理:负责处理并行操作之类的系统资源管理功能任务管理:负责处理并行操作之类的系统资源管理功能 数据管理:负责设计系统与数据库的接口数据管理:负责设计系统与数据库的接口 详细设计详细设计对对OOD模型进行细化模型进行细化 细化分析:是否有可以直接引用的已有类或部件细化分析:是否有可以直接引用的已有类或部件 细化设计:设计类,包括类的属性和类之间的相互关系细化设计:设计类,包括类的属性和类之间的相互关系 细化验证细化验证:验证

21、各对象类公式间是否相容和一致、类成验证各对象类公式间是否相容和一致、类成 员的访问权限设置是否合理、对象类的功能员的访问权限设置是否合理、对象类的功能 是否符合用户要求等。是否符合用户要求等。 淮海工学院淮海工学院 计算机课程(3) 面向对象的实现(面向对象的实现(OOP object oriented programming) 选择一种合适的面向对象的编程语言选择一种合适的面向对象的编程语言 用选定的语言编码实现对软件系统中各对象类的详用选定的语言编码实现对软件系统中各对象类的详尽描述尽描述 将编写好的各个类代码模块根据类的相互关系集成将编写好的各个类代码模块根据类的相互关系集成起来起来 利

22、用开发人员提供的测试样例和用户提供的测试样利用开发人员提供的测试样例和用户提供的测试样例分别检验编码完成的各个模块和整个软件系统。例分别检验编码完成的各个模块和整个软件系统。 淮海工学院淮海工学院 计算机课程面向对象的软件开发过程小结面向对象的软件开发过程小结 分析用户需求分析用户需求,从问题中抽取对象模型;,从问题中抽取对象模型; 将模型细化,将模型细化,设计类设计类,包括类的属性和类之间,包括类的属性和类之间的相互关系,同时考察是否有可以直接引用的的相互关系,同时考察是否有可以直接引用的已有类或部件;已有类或部件; 选定一种面向对象的编程语言,具体选定一种面向对象的编程语言,具体编码实现编

23、码实现上一阶段类的设计,并在开发过程中引入测试,上一阶段类的设计,并在开发过程中引入测试,完善整个解决方案。完善整个解决方案。 淮海工学院淮海工学院 计算机课程3.1.4 面向对象程序设计的四个特点面向对象程序设计的四个特点 抽象性抽象性 指采用数据抽象的方法来构建程序的类、对象和方指采用数据抽象的方法来构建程序的类、对象和方法,即把系统中需要处理的数据和这些数据上的操法,即把系统中需要处理的数据和这些数据上的操作结合在一起,根据功能、性质、作用等因素抽象作结合在一起,根据功能、性质、作用等因素抽象成不同的抽象数据类型。成不同的抽象数据类型。 封装性封装性 指利用类将数据和基于数据的操作封装在

24、一起,数指利用类将数据和基于数据的操作封装在一起,数据被保护在类的内部,系统的其他部分只有通过包据被保护在类的内部,系统的其他部分只有通过包裹在数据外面的被授权的操作,才能与这个类进行裹在数据外面的被授权的操作,才能与这个类进行交流和交互。交流和交互。 淮海工学院淮海工学院 计算机课程 继承性继承性 指一个类可以从其它已有的类中派生,新类保持指一个类可以从其它已有的类中派生,新类保持了父类中的行为和属性,但增加了新的功能。了父类中的行为和属性,但增加了新的功能。 多态性多态性 指一个程序中可以有同名的不同方法共存的情况。指一个程序中可以有同名的不同方法共存的情况。可以利用子类对父类方法的覆盖和

25、重载在同一个可以利用子类对父类方法的覆盖和重载在同一个类中定义多个同名的方法来实现。类中定义多个同名的方法来实现。 淮海工学院淮海工学院 计算机课程3.1.5 面向对象程序设计的三大优点面向对象程序设计的三大优点可重用性可重用性 指在一个软件项目中所开发的模块,不仅可以用于指在一个软件项目中所开发的模块,不仅可以用于本项目,还可以重复地使用在其他项目中。本项目,还可以重复地使用在其他项目中。提高了开发效率,缩短了开发周期,降低了开提高了开发效率,缩短了开发周期,降低了开发成本。发成本。由于采用了正确、有效的模块,质量得到保证,由于采用了正确、有效的模块,质量得到保证,维护工作量减少。维护工作量

26、减少。采用可重用模块来构建程序,提高了程序的标采用可重用模块来构建程序,提高了程序的标准化程度,符合现代大规模软件开发的需求。准化程度,符合现代大规模软件开发的需求。 淮海工学院淮海工学院 计算机课程 可管理性可管理性 采用类作为构建系统的部件,使整个项目的组织更加采用类作为构建系统的部件,使整个项目的组织更加合理、方便;合理、方便; 把数据和其上的操作封装在一起,仅本类的方法才可把数据和其上的操作封装在一起,仅本类的方法才可以操纵、改变这些数据,效率提高,开发难度降低;以操纵、改变这些数据,效率提高,开发难度降低;指应用软件能够很方便地进行修改和扩充,包括软件的内容、指应用软件能够很方便地进

27、行修改和扩充,包括软件的内容、形式和工作机制(如把形式和工作机制(如把C/S模式改为模式改为B/S模式)的修改和扩模式)的修改和扩充。充。 特别适合于使用在快速原型的软件开发方法中。特别适合于使用在快速原型的软件开发方法中。 使系统维护(包括延伸开发)变得简单和容易,维护使系统维护(包括延伸开发)变得简单和容易,维护工作量和开销大大降低。工作量和开销大大降低。 对模块化技术的更有效的支持。对模块化技术的更有效的支持。 可扩展性可扩展性 淮海工学院淮海工学院 计算机课程再回首:再回首: Java关键字关键字 数据类型:byte boolean char double float int long

28、 short , 特殊的值: false true void null length 程序流程控制: if else 、 switch case、 break default、do while、for 、continue、return 类的定义:class extends implements import interface package super this 非访问控制符:abstract final static native 特殊运算符: instanceof new 访问控制符:public private protected 异常处理:try catch finally thro

29、w throws 线程:thread transient synchronized 淮海工学院淮海工学院 计算机课程3. 2 Java 的类的类 类由数据和方法构成,是类由数据和方法构成,是Java编程的基础。编程的基础。 类既要提供与外部联系的接口,同时又要尽类既要提供与外部联系的接口,同时又要尽可能隐藏类的实现细节。可能隐藏类的实现细节。类类属性(数据)属性(数据)方法(操作数据)方法(操作数据) 淮海工学院淮海工学院 计算机课程3.2.1 类的定义类的定义 修饰符修饰符 classclass 类名类名 extendsextends 父类父类 implementsimplements 接口

30、名接口名 成员变量声明成员变量声明/域(属性)的声明域(属性)的声明 方法声明方法声明public abstract final 淮海工学院淮海工学院 计算机课程 淮海工学院淮海工学院 计算机课程 淮海工学院淮海工学院 计算机课程接口名接口名父类父类修修饰饰符符定义类属性,成员变量定义类属性,成员变量定义类方法定义类方法 淮海工学院淮海工学院 计算机课程(1) 声明类头:声明类头:关键字关键字classclass父类名:父类名:跟在跟在extendsextends关键字后,用以说明当前类是已关键字后,用以说明当前类是已经存在的哪个类的子类。经存在的哪个类的子类。 通过定义继承关系,子类通过定义

31、继承关系,子类可以获得父类的所有属性和方法,并进一步定义它可以获得父类的所有属性和方法,并进一步定义它自己的特殊属性自己的特殊属性. .接口名接口名:跟在:跟在implementsimplements关键字后,用以说明当前类关键字后,用以说明当前类中实现了哪个接口定义的功能和方法。中实现了哪个接口定义的功能和方法。修饰符修饰符:说明类的特殊性质,分为:说明类的特殊性质,分为访问控制符访问控制符、抽象抽象说明类说明类和和最终类最终类说明符。说明符。 淮海工学院淮海工学院 计算机课程(2 2)声明类体:)声明类体: 定义类的具体内容,包括类的属性与方法定义类的具体内容,包括类的属性与方法 类的属性

32、类的属性 : 可以是简单变量,也可以是对象、数组等其可以是简单变量,也可以是对象、数组等其他复杂数据结构。他复杂数据结构。 声明类属性为声明类属性为简单变量简单变量的语法:的语法: 修饰符修饰符 变量类型变量类型 变量名变量名=变量初值变量初值 ;例:例:int password;int password; 声明类属性为声明类属性为对象对象的语法:的语法: 修饰符修饰符 类名类名 对象名对象名=new =new 类名(实际参数列表)类名(实际参数列表) ;例:例: PhoneCard PhoneCard myCard=new myCard=new PhoneCard ( );PhoneCard

33、 ( ); 修饰符有修饰符有访问控制符、静态修饰符访问控制符、静态修饰符staticstatic、 最终修饰符最终修饰符finalfinal、易失修饰符、易失修饰符volatilevolatile和和 过渡修饰符过渡修饰符transienttransient。 淮海工学院淮海工学院 计算机课程 类的方法类的方法 : 即成员函数,它规定类属性上的操作,实现类即成员函数,它规定类属性上的操作,实现类的内部功能的机制,是类与外部交互的窗口。的内部功能的机制,是类与外部交互的窗口。语法结构:语法结构: 修饰符修饰符 返回值类型返回值类型 方法名(参数列表)方法名(参数列表)throwsthrows 例

34、外名例外名1 1,例外名,例外名2 2,. 方法体;方法体; 局部变量声明;局部变量声明; 语句序列;语句序列; 淮海工学院淮海工学院 计算机课程课堂练习:课堂练习:1.1.编写一个车辆类,其中包括编写一个车辆类,其中包括2个域:车辆类别、轮个域:车辆类别、轮胎数量,胎数量,2个成员方法:分别用来设置车辆类别和轮个成员方法:分别用来设置车辆类别和轮胎数量。胎数量。2. 编写一个编写一个Java Application程序,实现车辆对象的程序,实现车辆对象的创建,并调用其成员方法将所创建车辆的创建,并调用其成员方法将所创建车辆的“车辆类车辆类别别”设置为设置为“长公交长公交”、轮胎数量设置为、轮

35、胎数量设置为6,要求通,要求通过字符界面输出所创建与设置的结果。过字符界面输出所创建与设置的结果。 淮海工学院淮海工学院 计算机课程 淮海工学院淮海工学院 计算机课程3.2.2 类中的类中的“变量变量”概念辨析:概念辨析:(1)成员变量:)成员变量:在类体变量定义处定义的变量,在整个类内都有效;在类体变量定义处定义的变量,在整个类内都有效;成员变量包括成员变量包括实例变量实例变量和和类变量类变量,用,用static定义的变量定义的变量是类变量,也叫静态变量;是类变量,也叫静态变量;所有对象独享实例变量,但共享类变量;所有对象独享实例变量,但共享类变量;实例变量只能通过对象名访问,类变量既可以通

36、过某实例变量只能通过对象名访问,类变量既可以通过某个对象名也可以通过类名来访问。个对象名也可以通过类名来访问。(2)局部变量:)局部变量: 在类的方法中定义的变量,仅在定义它的方法内有效在类的方法中定义的变量,仅在定义它的方法内有效 淮海工学院淮海工学院 计算机课程3.2.3 类中的类中的“方法方法”概念辨析:概念辨析:(1)实例方法:)实例方法:实例方法既可以操作实例变量,也可以操作类变量;实例方法既可以操作实例变量,也可以操作类变量;实例方法在实例方法在创建类对象后才分配入口地址创建类对象后才分配入口地址;实例方法可以被类创建的任何对象访问,必须通过对象来调用;实例方法可以被类创建的任何对

37、象访问,必须通过对象来调用;实例方法可以调用其它方法(包括类方法)。实例方法可以调用其它方法(包括类方法)。(2)类方法:)类方法: 用用static修饰修饰的方法是类方法,也叫静态方法;的方法是类方法,也叫静态方法; 类方法只能操作类变量类方法只能操作类变量; 类方法在类被加载到内存后就分配了入口地址;类方法在类被加载到内存后就分配了入口地址; 类方法可以被类创建的任何对象调用,也可以通过类名来调类方法可以被类创建的任何对象调用,也可以通过类名来调用,类方法只能调用该类的类方法。用,类方法只能调用该类的类方法。 淮海工学院淮海工学院 计算机课程本类中方法与变量之间的访问关系本类中方法与变量之

38、间的访问关系实例方法实例方法类方法类方法实例变量实例变量类变量类变量用用 对象名对象名用用 类名类名各类之间方法与属性的引用方法各类之间方法与属性的引用方法实例方法实例方法类方法类方法 实例变量实例变量类变量类变量局部变量局部变量实例方法实例方法类方法类方法 淮海工学院淮海工学院 计算机课程 淮海工学院淮海工学院 计算机课程 淮海工学院淮海工学院 计算机课程 淮海工学院淮海工学院 计算机课程3.3 3.3 构造方法与对象创建构造方法与对象创建3.3.1 构造方法的基本概念构造方法的基本概念构造方法构造方法:用来:用来初始化对象初始化对象(为其所有属性赋初值)(为其所有属性赋初值) 的一个特殊方

39、法。的一个特殊方法。(也称构造函数)(也称构造函数) 构造方法名与类名相同构造方法名与类名相同 构造方法可以有构造方法可以有0个或多个参数个或多个参数特点特点 构造方法始终和构造方法始终和new关键字一起调用关键字一起调用 构造方法没有返回值构造方法没有返回值 在创建一个类的新对象时,系统自动调用构造在创建一个类的新对象时,系统自动调用构造 方法对其进行初始化。方法对其进行初始化。 淮海工学院淮海工学院 计算机课程引入构造方法的原因引入构造方法的原因: :1) 1) 满足面向对象程序设计中对象初始化的需要满足面向对象程序设计中对象初始化的需要; ;2) 2) 提高灵活度,使初始化工作除赋值外有

40、更复提高灵活度,使初始化工作除赋值外有更复杂的操作杂的操作; ; 在不定义构造方法时,系统会自动为该类在不定义构造方法时,系统会自动为该类生成一个默认(缺省)的构造方法。生成一个默认(缺省)的构造方法。 淮海工学院淮海工学院 计算机课程缺省构造缺省构造 类中可以不出现构造方法,如果没有构造方法,类中可以不出现构造方法,如果没有构造方法,系统将为该类缺省定义一个空构造方法系统将为该类缺省定义一个空构造方法,也称为,也称为缺省构造方法。用缺省构造方法初始化对象时,缺省构造方法。用缺省构造方法初始化对象时,系统用缺省值初始化类对象的数据成员。系统用缺省值初始化类对象的数据成员。 各数据类型的缺省值如

41、下:各数据类型的缺省值如下:数值型:数值型:0 0布尔型:布尔型:falsefalse字符型:字符型:00 类:类:null 淮海工学院淮海工学院 计算机课程3.3.2 3.3.2 构造方法的定义构造方法的定义例如,可以为例如,可以为Student类定义如下的构造方法,初始化它的类定义如下的构造方法,初始化它的2个个域:域: 注意:注意: 构造方法定义了几个形式参数,创建对象的构造方法定义了几个形式参数,创建对象的语句在调用构造方法时,需要提供几个语句在调用构造方法时,需要提供几个类型、顺序类型、顺序一致的实际参数一致的实际参数,指明新建对象各域的,指明新建对象各域的初始值。初始值。 Stud

42、ent(String m, String s)name=m;sex=s; 淮海工学院淮海工学院 计算机课程public class TestStudent public static void main(String args) Student s1=new Student(“张华张华”, “软软131”); Student s2=new Student(“丁一丁一”, “软软132”); System.out.println(s1.stuName); System.out.println(s1.stuClass); System.out.println(s2.stuNam); class S

43、tudentString stuName;String stuClass; Student(String m,String s)stuName=m;stuClass=s; 淮海工学院淮海工学院 计算机课程对象的使用对象的使用 可以用点(可以用点(.)操作符来调用对象实例的成员)操作符来调用对象实例的成员变量和方法变量和方法 (1) 域的引用域的引用 成员变量引用的形式如下:成员变量引用的形式如下: 对象名对象名.variablename 例如可以通过赋值语句修改例如可以通过赋值语句修改firstPfirstP的值。的值。 firstP

44、 = “Henry”; 淮海工学院淮海工学院 计算机课程(2 2)方法的调用方法的调用对象的方法调用的一般形式如下:对象的方法调用的一般形式如下:对象名对象名.方法名方法名( 参数列表参数列表) 例如:例如:firstPerson.setAge(30); 实参实参实参实参 淮海工学院淮海工学院 计算机课程classDemo.javapublic class ClassDemo int a; int b; ClassDemo() a = 2; b = 3; void show() System.out.println(“a=”+a+”,b=”+b); public static void mai

45、n(String args) new ClassDemo(). show(); 成员变量成员变量 成员方法成员方法 淮海工学院淮海工学院 计算机课程class class PersonPerson StringString name; / name; /姓名姓名 int sex; /int sex; /性别性别 intint age; /age; /年龄年龄 Person(Person(String String s1)s1)name=s1;name=s1; String String getName()getName() return name;return name; void void

46、setAge (setAge (intint d d) ) age= age= d;d; Person类类namesexagePerson()构造方()构造方法法getName()()setAge( ) 淮海工学院淮海工学院 计算机课程3.3.3 创建类的实例对象创建类的实例对象创建对象的一般格式:创建对象的一般格式: 类名类名 新建对象名新建对象名= = newnew 构造函数构造函数( )( ); newnew是为新建对象开辟内存空间的算符。是为新建对象开辟内存空间的算符。 构造函数()用来完成对象的初始化。构造函数()用来完成对象的初始化。如:如:TextField input= new

47、 TextField(6);TextField input= new TextField(6); 建立一个名为建立一个名为inputinput、长度为、长度为6 6的文本框。的文本框。 Person p1=new Person(“Person p1=new Person(“张三张三”);”); 建立一个名为建立一个名为 “张三张三”的人的人 p1p1。 淮海工学院淮海工学院 计算机课程3.4 定义和使用定义和使用Java的方法的方法3.4.1 3.4.1 方法的定义方法的定义JavaJava中,方法只能在类中定义,由方法头和方法体中,方法只能在类中定义,由方法头和方法体两部分组成。两部分组成。

48、格式格式: : 修饰符修饰符 返回值类型返回值类型 方法名方法名( ( 参数列表参数列表 ) )throws throws 例外名例外名1,1,例外名例外名2,.2,. 局部变量局部变量/ /对象声明部分对象声明部分; ; 语句部分语句部分; ; 淮海工学院淮海工学院 计算机课程方法定义举例方法定义举例例如:定义计算平方值的方法例如:定义计算平方值的方法int square(int x)int square(int x) int s;int s; s=x s=x* *x;x; return s; return s; intint是方法返回值类型,是方法返回值类型, squaresquare是方

49、法的名字;是方法的名字;x x是方法的形式参数,是方法的形式参数,s s是方法体内的局部变量。是方法体内的局部变量。 淮海工学院淮海工学院 计算机课程方法声明中的修饰符的含义:方法声明中的修饰符的含义: public | protected | private staticfinal | abstract native synchronizedstatic: 静态方法(类方法),可通过类名直接调用静态方法(类方法),可通过类名直接调用abstract: 抽象方法,没有方法体抽象方法,没有方法体final: 方法不能被重写方法不能被重写native: 集成其它语言的代码集成其它语言的代码sync

50、hronized: 控制多个并发线程的访问控制多个并发线程的访问例:例: public static void main(String args) /主类主类方法方法 淮海工学院淮海工学院 计算机课程3.4.2 3.4.2 方法的参数方法的参数方法头定义时所带的参数称为方法头定义时所带的参数称为形参形参,它规定了方法,它规定了方法的输入数据,调用时所带的参数称为的输入数据,调用时所带的参数称为实参实参。带多个参数时,要指明各参数的类型,并用逗号把带多个参数时,要指明各参数的类型,并用逗号把各参数分隔开来。各参数分隔开来。“形实结合形实结合”时是按时是按位置顺序位置顺序一一对应的,否则会一一对应

51、的,否则会引发编译错误。引发编译错误。多个同名方法通过所带参数不同(包括:多个同名方法通过所带参数不同(包括:顺序、类顺序、类型、个数型、个数)而实现多态。)而实现多态。 淮海工学院淮海工学院 计算机课程参参数数传传递递示示例例值传递值传递 淮海工学院淮海工学院 计算机课程 值传递值传递 调用方法时,参数是普通变量,调用方法时,参数是普通变量,实参实参将其将其值传给值传给形参形参,调用中实参的值不受形参的,调用中实参的值不受形参的影响。影响。 引用传递引用传递 调用方法时,参数的类型为复合数据类型调用方法时,参数的类型为复合数据类型,如:数组、类。实参随形参的变化而变,如:数组、类。实参随形参

52、的变化而变化。化。参数参数传递方式分类传递方式分类: 淮海工学院淮海工学院 计算机课程3.4.3 方法的返回值方法的返回值 方法的返回值是方法的输出数据。方法的返回值是方法的输出数据。 定义方法头时,通过定义方法返回值类型说明定义方法头时,通过定义方法返回值类型说明该方法的输出数据类型,用该方法的输出数据类型,用return语句返回确语句返回确定数值。定数值。 方法无返回值时,返回值类型应为方法无返回值时,返回值类型应为void。 格式:格式: return 表达式;表达式; 淮海工学院淮海工学院 计算机课程例:例:类的定义类的定义public class TestClasspublic cl

53、ass TestClass static int s; static int s; /定义在此处才可以两个方法都用定义在此处才可以两个方法都用public static void main(String args)public static void main(String args) System.out.println(System.out.println(面积是面积是:+square(5)+ +s); :+square(5)+ +s); / /可以用两种方法引用返回值可以用两种方法引用返回值 static int square(int x)static int square(int x)

54、 / int s;/ int s; /在此处定义的话在此处定义的话,main,main方法中则不能引用方法中则不能引用 s=xs=x* *x;x; return s; return s; 淮海工学院淮海工学院 计算机课程3.4.4 3.4.4 方法的使用方法的使用(1)(1) 程序调用方法程序调用方法: : 大部分用户自定义的方法都属于程序大部分用户自定义的方法都属于程序调用方法。调用命令通过被调用方法的名称来说明要使调用方法。调用命令通过被调用方法的名称来说明要使用哪个自定义的方法,完成用哪个自定义的方法,完成“形实结合形实结合”,为被调用方,为被调用方法的各形式参数赋初值。法的各形式参数赋

55、初值。 如:如: x=isPrime(i);x=isPrime(i); 当有多个同名方法时,根据参数列表来区分。当有多个同名方法时,根据参数列表来区分。(2)(2)系统调用方法系统调用方法: : 其最大特点是方法定义后,不需要写其最大特点是方法定义后,不需要写专门的调用命令,系统会在程序运行过程中自动去调用专门的调用命令,系统会在程序运行过程中自动去调用此方法才完成它所定义的任务。此方法才完成它所定义的任务。 如:如:init()init() 淮海工学院淮海工学院 计算机课程3.4.5 3.4.5 定义方法的步骤和注意事项定义方法的步骤和注意事项(1 1)算法中需要细化的步骤、程序中重复的代码

56、以)算法中需要细化的步骤、程序中重复的代码以及重载父类方法都可以定义成类的方法。及重载父类方法都可以定义成类的方法。(2 2)方法通常)方法通常具有相对独立的功能和明确的输入输具有相对独立的功能和明确的输入输出接口。出接口。(3 3)定义方法分定义方法头和方法体两部分。)定义方法分定义方法头和方法体两部分。(4 4)方法头包括方法名、参数列表、返回值类型、)方法头包括方法名、参数列表、返回值类型、方法修饰和方法抛出的例外列表。方法修饰和方法抛出的例外列表。重载方法的方重载方法的方法头要与其父类方法的方法头基本一致。法头要与其父类方法的方法头基本一致。(5 5)方法命名要遵循)方法命名要遵循Ja

57、vaJava对标识符的规定:以字母、对标识符的规定:以字母、$ $或或- -开头,由字母、数字组成。开头,由字母、数字组成。 淮海工学院淮海工学院 计算机课程 (6 6) 参数列表是方法的输入接口,它列出了一系参数列表是方法的输入接口,它列出了一系列形式参数的类型和名称,方法通过它们接收外界列形式参数的类型和名称,方法通过它们接收外界输入的数据;输入的数据;参数列表必须包括在方法名后面的小参数列表必须包括在方法名后面的小括号里,小括号是方法的标志括号里,小括号是方法的标志,如果方法不需要输,如果方法不需要输入数据,小括号里可以为空。入数据,小括号里可以为空。 (7 7)返回值类型定义了方法返回给调用它的语句)返回值类型定义了方法返回给调用它的语句的数据类型,是方法的输出接口;的数据类型,是方法的输出接口;这个数据通常只这个数据通常只有一个有一个,在方法体中用,在方法体中用returnreturn语句来说明输出数据语句来说明输出数据的数值。方法体中程序的的数值。方法体中程序的每个分支都必须有一个每个分支都必须有一个returnreturn语句语句,保证在任何情况下都有返回数值,调,保证在任何情况下都有返回数值,调用该方法的语句可以用一个变量来接收方法的返回用该方法的语句可以用一个变量来接收方法的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论