第 4 章 学习目的、知识点、基本要求

55
4 4 第第第第 第第第第 第第第第 、、 第第第第 第第第第 第第第第 、、 第第第第第第第第第第第第第第 第第第第第第 第第第第第第第 第第第第第第第 Java Java 第第第第第第第第第 第第 第 ,一 第第第第第第第第第 第第 第 ,一 第第第第第第第第第第第第第第第第第第第第第第第第第第第第第第第第第第第第* * 第第第第 第第第 第第 第第第第第第 、、、; 第第第第 第第第 第第 第第第第第第 、、、; * * 第第第第第第第第第第第第第第第第第第第第第第第第第第第第第第第第* * 第第第第第第第第第第第第第第第第 第第第第第 第第第第第第第第第第第第第第第第 第第第第第 第第第第第第第第* * 第第第 第第第第第第第 、。 第第第 第第第第第第第 、。

description

第 4 章 学习目的、知识点、基本要求. 学习目的: 理解面向对象 的基本概念以及 Java 系统对 类与对象概念的实现,进一步掌握面向对象的程序开发技术。 基本知识点: * 数据抽象、封装、类、对象等概念; * 数据成员的定义及非访问权限修饰符; * 成员方法的定义及非访问权限修饰符、成员方法和 构造方法; * 创建类、对象并使用之。. 第 4 章 学习目的、知识点、基本要求. 基本要求: * 掌握抽象和封装的基本概念; * 掌握类与对象的基本概念以及他们之间的关系; - PowerPoint PPT Presentation

Transcript of 第 4 章 学习目的、知识点、基本要求

Page 1: 第 4 章   学习目的、知识点、基本要求

第第 44 章章 学习目的、知识点、基本要 学习目的、知识点、基本要求求学习目的:学习目的: 理解面向对象理解面向对象的基本概念以及的基本概念以及 JavaJava 系统对系统对类与对象概类与对象概

念的实现,进一步掌握面向对象的程序开发技术。念的实现,进一步掌握面向对象的程序开发技术。

基本知识点:基本知识点: * * 数据抽象、封装、类、对象等概念;数据抽象、封装、类、对象等概念; * * 数据成员的定义及非访问权限修饰符;数据成员的定义及非访问权限修饰符;

* * 成员方法的定义及非访问权限修饰符、成员方法和 成员方法的定义及非访问权限修饰符、成员方法和 构造方法;构造方法;

* * 创建类、对象并使用之。创建类、对象并使用之。

Page 2: 第 4 章   学习目的、知识点、基本要求

第第 44 章章 学习目的、知识点、基本要 学习目的、知识点、基本要求求基本要求:基本要求:

* * 掌握抽象和封装的基本概念;掌握抽象和封装的基本概念; * * 掌握类与对象的基本概念以及他们之间的关系;掌握类与对象的基本概念以及他们之间的关系; * * 掌握在掌握在 JavaJava 程序中定义类与创建对象技术;程序中定义类与创建对象技术; * * 区分系统类与用户定义类,初步了解区分系统类与用户定义类,初步了解 JavaJava 类库;类库; * * 掌握数据成员和方法成员的定义技术;掌握数据成员和方法成员的定义技术; * * 初步掌握各种修饰符的作用及其使用技术。初步掌握各种修饰符的作用及其使用技术。

Page 3: 第 4 章   学习目的、知识点、基本要求

第第 44 章章 JavaJava 类与对象类与对象

4.1 4.1 抽象与封装抽象与封装

4.2 4.2 类与对象的概念类与对象的概念

4.3 Java4.3 Java 程序的类程序的类

4.4 Java4.4 Java 对象的定义对象的定义

4.5 Java4.5 Java 程序的变量程序的变量

4.6 Java4.6 Java 程序的方法程序的方法

Page 4: 第 4 章   学习目的、知识点、基本要求

4.1 4.1 抽象与封装抽象与封装1 1 数据抽象数据抽象

面向对象程序设计采用的抽象方法学是数面向对象程序设计采用的抽象方法学是数据抽象。据抽象。 数据抽象把需要处理的数据和施加于这些数据抽象把需要处理的数据和施加于这些数据之上的操作结合一起,并强调结合为一数据之上的操作结合一起,并强调结合为一个不可分割的系统单位——对象,对象的外个不可分割的系统单位——对象,对象的外部只需要知道这个对象能做什么,而不必知部只需要知道这个对象能做什么,而不必知道它是如何做的。道它是如何做的。

Page 5: 第 4 章   学习目的、知识点、基本要求

4.1 4.1 抽象与封装抽象与封装2 2 封装的概念封装的概念

封装是利用抽象数据类型将数据和基于数封装是利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分据的操作封装在一起,使其构成一个不可分割的独立实体,数据被保护在抽象数据类型割的独立实体,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留的内部,尽可能地隐藏内部的细节,只保留一些对外接口,使之与外部发生联系。系统一些对外接口,使之与外部发生联系。系统的其它部分只能通过包裹在数据外面的被授的其它部分只能通过包裹在数据外面的被授权的操作来与这个抽象数据类型交流与交互。权的操作来与这个抽象数据类型交流与交互。

返回

Page 6: 第 4 章   学习目的、知识点、基本要求

4.2 4.2 类与对象的概念类与对象的概念

1 1 类——类—— classclass 类是对一组相似对象的描述,这类是对一组相似对象的描述,这些对象具有相同的属性和行为、相些对象具有相同的属性和行为、相同的变量(数据结构)和方法实现。同的变量(数据结构)和方法实现。类定义就是对这些变量和方法实现类定义就是对这些变量和方法实现进行描述。进行描述。

Page 7: 第 4 章   学习目的、知识点、基本要求

4.2 4.2 类与对象的概念类与对象的概念

2 2 对象——对象—— objectobject

实体抽象——属性和行为。

属性:表示实体的静态特征,所有属性的组合反映 实体的状态;行为:表示实体的动态特征,一个行为的过程可能 会影响或改变实体的状态。

Page 8: 第 4 章   学习目的、知识点、基本要求

4.2 4.2 类与对象的概念类与对象的概念

2 2 对象——对象—— objectobject

是对客观世界里的任何实体的抽象。

是对客观世界实体的软件模型, 由数据和方法组成。

是数据与方法的封装体。

Page 9: 第 4 章   学习目的、知识点、基本要求

4.2 4.2 类与对象的概念类与对象的概念3 3 类与对象的关系类与对象的关系

类给出了属于该类的全部对象的抽象定义,类给出了属于该类的全部对象的抽象定义,而对象则是符合这种定义的一个实体。而对象则是符合这种定义的一个实体。** 在面向对象的程序设计中,对象被称作类的一个在面向对象的程序设计中,对象被称作类的一个

实例实例(( instanceinstance ));;* * 而类是创建对性的模板(而类是创建对性的模板( templatetemplate )。)。

抽象

实例化

类:汽车属性:颜色 型号 马力 生产厂

服务:运输

对象:桑塔纳

静态 黑色特征: 2000 80 上海大众

动态特征:载人

数据成员

方法成员

数据值

执行操作

(类与对象的关系示例) 返回

Page 10: 第 4 章   学习目的、知识点、基本要求

4.34.3 JavaJava 的类的类

JavaJava 的程序设计就是定义类的过程。的程序设计就是定义类的过程。 4.3.1 4.3.1 系统定义的类系统定义的类 4.3.24.3.2 用户程序自定义类用户程序自定义类

Page 11: 第 4 章   学习目的、知识点、基本要求

4.3.1 4.3.1 系统定义的类系统定义的类

系统定义好的类就是系统定义好的类就是 JavaJava 类库中的类。类库中的类。 根据实现功能不同,划分不同的集合,每 根据实现功能不同,划分不同的集合,每个集合是一个包,合称为类库。又称为:个集合是一个包,合称为类库。又称为:API---API---application program interfaceapplication program interface

SUN SUN 公司提供的类库称为基础类库公司提供的类库称为基础类库 JFCJFC 。。

Page 12: 第 4 章   学习目的、知识点、基本要求

自学所有类库的查找方法自学所有类库的查找方法

参考资料:参考资料:Java2 APIJava2 API 大全 电子工业出版社大全 电子工业出版社

列出 Java 中所有软件包页面

软件包(总说明、包内容说明)页面 :接口 Interfaces/ 类 classes/ 异常 Exceptions/ 错误 Errors类和接口页面 :

最顶级的类为 Object/ 直接继承的类是 Panel/ ...

说明有哪些软件包、类、方法等用了该类的任何一部分内容的页面。软件包、类和接口的层次图页面。

(比 class 页面详细)

所有不推荐使用类的功能页面提示。按字母顺序列出 Java 中的所有类、接口、构造方法、方法和域。

Java.sun.com/j2se/1.4.1/docs/api/index.html

Page 13: 第 4 章   学习目的、知识点、基本要求

4.3.1.14.3.1.1 常用系统定义的包简介1) 1) java.langjava.lang2) java.lang.reflect2) java.lang.reflect3) java.io3) java.io4) java.util4) java.util5) java.util.zip5) java.util.zip6) java.awt6) java.awt7) java.awt.image7) java.awt.image8) java.awt.datatransfer8) java.awt.datatransfer9) java.awt.event9) java.awt.event

1. 核心类库:含数据类型、基本数学函数、字符串 、 处理、线程、异常处理类等

2. 核心类库:是反射对象工具,监视正在运行的对象并获得它的构造函数、方法和属性。

3. 标准 I/O 类库: 基本 I/O 流、 文件 I/O 流、 过滤 I/O 流、 管道 I/O 流、 随机 I/O 流等。

4 低级实用工具类库: 处理时间 Date 类 变长数组 Vector 类 栈 Stack 类 杂凑表 HashTable 类

5 低级实用工具类库

实现文件压缩类

6. 构建图形用户:低级汇图操作图形界面组件、布局管理界面用户交互、事件响应等

7. 构建图形用户处理、操作网上图片的工具

8. 构建图形用户处理剪贴板、字符串发送器等

9. 构建图形用户Event 类的扩充处理不同类型的事件

Page 14: 第 4 章   学习目的、知识点、基本要求

4.3.1.14.3.1.1 常用系统定义的包简介10) java.applet10) java.applet11) java.net11) java.net12) java.corba12) java.corba13) java.corba.orb13) java.corba.orb14) java.rmi14) java.rmi15) java.rmi.reistry15) java.rmi.reistry16) java.rmi.server16) java.rmi.server17) java.security17) java.security18) java.security.acl18) java.security.acl19) java.security.interfaces19) java.security.interfaces20) java.sql20) java.sql

10. 实现运行于 Internet 浏览器中的 Java Applet 的工具 类库。

11. 网络功能类库低层网络通信编写 FTP,

Telnet 等网上通信类访问网上资源进行 CGI 网关调用的类等。

12,13. 其他面向对象语言开发的 部件。(可方便、动态地利用已经存在的软件)

14~16. 远程方法调用用户程序可以在远程计算机(服务器)上创建对象,在本地计算机上使用该对象。

17~19. 安全控制管理对程序加密把 Java Applet 进行标记,使之具有与完整的 Java程序有相同的安全性。

20. 访问各种数据库包 JDBC 。可访问:Oracle, Sybase ,DB2, SQLServer 等

Page 15: 第 4 章   学习目的、知识点、基本要求

4.3.1.2 4.3.1.2 常用 java子包汇总包包 接口和类的用途 接口和类的用途 包包 接口和类的用途接口和类的用途

java.appletjava.applet applet applet java.rmijava.rmi 远程方法调用远程方法调用java.awtjava.awt 图形和图形用户接口 图形和图形用户接口 java.rmi.dgc java.rmi.dgc 支持支持 java.rmijava.rmijava.awt.datatranster java.awt.datatranster 剪切和粘贴功能 剪切和粘贴功能 java.rmi.registry java.rmi.registry 同上同上java.awt.eventjava.awt.event 事件处理事件处理 java.rmi.server java.rmi.server 同上同上java.awt.imagejava.awt.image 图像处理图像处理 java.security java.security 安全安全java.awt.peerjava.awt.peer 平台无关图形平台无关图形 java.security.acl java.security.acl 支持支持 java.securityjava.securityjava.beansjava.beans 软件组件软件组件 java.security.interfaces java.security.interfaces 同上同上java.iojava.io 输入输出输入输出 java.sqljava.sql 数据库数据库java.langjava.lang 语言的核心功能语言的核心功能 java.textjava.text 国际化国际化java.lang.reflectjava.lang.reflect 映射(“自省”)映射(“自省”) java.utiljava.util 各种工各种工

具具java.mathjava.math 任意精度算术运算 任意精度算术运算 java.util.zipjava.util.zip 压缩和解压缩压缩和解压缩java.netjava.net 连网连网

Page 16: 第 4 章   学习目的、知识点、基本要求

4.3.1.2 4.3.1.2 常用 javax子包汇总

包包 包中接口和类的用途包中接口和类的用途javax.accessibilityjavax.accessibility 判定技术判定技术javax.swingjavax.swing ““ 轻便”的图形和图形用户轻便”的图形和图形用户javax.swing.borderjavax.swing.border 专用边界专用边界javax.swing.colorchooserjavax.swing.colorchooser 颜色选择颜色选择javax.swing.eventjavax.swing.event 扩展扩展 java.awt.eventjava.awt.event 的事件处理的事件处理javax.swing.filechooserjavax.swing.filechooser 文件选择文件选择javax.swing.plafjavax.swing.plaf 可插入的外观和效果可插入的外观和效果javax.swing.plaf.basicjavax.swing.plaf.basic 基本的外观和效果基本的外观和效果javax.swing.plaf.metaljavax.swing.plaf.metal 金属的外观和效果金属的外观和效果javax.swing.plaf.multijavax.swing.plaf.multi 复合体的外观和效果复合体的外观和效果javax.swing.tablejavax.swing.table 数据的表单表示数据的表单表示javax.swing.textjavax.swing.text 文本的表示和处理文本的表示和处理javax.swing.text.htmljavax.swing.text.html HTMLHTML文本文本javax.swing.text.rtfjavax.swing.text.rtf RTFRTF (( Rich Text FormatRich Text Format )文本)文本javax.swing.treejavax.swing.tree 数据的树型表示数据的树型表示javax.swing.undojavax.swing.undo 文本编辑中的撤消功能文本编辑中的撤消功能

Page 17: 第 4 章   学习目的、知识点、基本要求

4.3.4.3使用系统定义类的三种方式1 1 继承系统类继承系统类

例:每个例:每个 Java AppletJava Applet 的主类都是的主类都是 Java.appletJava.applet 包中 包中 AppletApplet 类的子类。类的子类。2 2 直接使用系统类直接使用系统类

例:字符界面系统标准输出的方法引用例:字符界面系统标准输出的方法引用System.out.println( )System.out.println( )

3 3 创建系统类的对象创建系统类的对象例:图形界面接受输入时创建系统类的对象例:图形界面接受输入时创建系统类的对象

TextField inputTextField input

重点

Page 18: 第 4 章   学习目的、知识点、基本要求

系统定义类小结

类库包中的程序都是字节码形式的程序,类库包中的程序都是字节码形式的程序,利用利用 importimport语句将一个包引入到程序里来,语句将一个包引入到程序里来,就相当于在编译过程中将该包中所有系统类就相当于在编译过程中将该包中所有系统类的字节码加入到用户的的字节码加入到用户的 JavaJava 程序中,这样程序中,这样用户用户 JavaJava 程序就可以使用这些系统及其类程序就可以使用这些系统及其类中的各种功能。中的各种功能。

使用系统类的前提条件: * 必须用 import语句引入所用到的系统类等。

Page 19: 第 4 章   学习目的、知识点、基本要求

4.3.24.3.2 用户程序自定义类用户程序自定义类

4.3.2.1 4.3.2.1 类的创建类的创建[[ 修饰符修饰符 ] <class> <] <class> < 类名类名 >[extends >[extends 父类父类 ][implements][implements 接口接口 ]] { { << 类体类体 (( 成员变量成员变量 )>)> << 类体类体 (( 成员方法成员方法 )>)> }}说明:说明:1. 1. 类修饰符:用于规定类的一些特性和对它的访问限制等。类修饰符:用于规定类的一些特性和对它的访问限制等。2. extends2. extends :继承父类(已经被定义的或系统的类)。:继承父类(已经被定义的或系统的类)。5. implements5. implements :实现接口,告诉编译器类实现的接口。:实现接口,告诉编译器类实现的接口。

<构造方法 ><静态初始化方法 ><方法定义 >

Page 20: 第 4 章   学习目的、知识点、基本要求

例题例题 4-14-1 程序分析程序分析 1————1———— 改改

import java.awt.*;import java.applet.Applet;

public class Class1 extends Applet{ private int x, y, width, height; // 成员变量声明

public void init() // 初始化方法 { width=60; height=60; } public void setPosition(int xPos, int yPos) // 设置点位置方法 { x=xPos; y=yPos; }

Page 21: 第 4 章   学习目的、知识点、基本要求

4.3.2.2 4.3.2.2 类修饰符类修饰符1 1 无修饰符的情况无修饰符的情况

如果一个类前无修饰符,则这个类只能被同一个包如果一个类前无修饰符,则这个类只能被同一个包里的类使用。里的类使用。

2 public2 public 修饰符修饰符 由由 publicpublic 修饰的类为公共类。它可以被其它包中类修饰的类为公共类。它可以被其它包中类使用。使用。

3 final3 final 修饰符修饰符 由由 finalfinal 修饰的类为最终类。它不能被任何其它类所修饰的类为最终类。它不能被任何其它类所继承,即它不能派生子类。继承,即它不能派生子类。

4 abstract4 abstract 修饰符修饰符 由由 abstractabstract 修饰的类为抽象类。其作用在于将许多修饰的类为抽象类。其作用在于将许多有关的类组织在一起,提供一个公共的基类,为派生有关的类组织在一起,提供一个公共的基类,为派生类奠定基础。类奠定基础。

Page 22: 第 4 章   学习目的、知识点、基本要求

4.3.2.2 4.3.2.2 类修饰符类修饰符

5 5 类修饰符的使用注意事项类修饰符的使用注意事项 可以同时使用多个修饰符来修饰一个类。 可以同时使用多个修饰符来修饰一个类。

当使用多个修饰符修饰一个类时,这些修饰当使用多个修饰符修饰一个类时,这些修饰符之间用空格分开,写在关键字符之间用空格分开,写在关键字 classclass 之前,之前,修饰符出现的顺序对类的性质没有任何影响。修饰符出现的顺序对类的性质没有任何影响。但是,不能同时用但是,不能同时用 abstractabstract 和和 finalfinal 两个修饰两个修饰符同一个类。符同一个类。

返回

Page 23: 第 4 章   学习目的、知识点、基本要求

4.44.4 对象的定义对象的定义 11

4.4.1 4.4.1 对象的创建对象的创建

1 1 对象的声明对象的声明 2 2 对象的实例化对象的实例化 3 3 对象的使用对象的使用 4 4 对象的清除对象的清除

Page 24: 第 4 章   学习目的、知识点、基本要求

4.44.4 对象的定义对象的定义 11

4.4.1 4.4.1 对象的创建对象的创建(( 11 )用类名定义所引用的对象)用类名定义所引用的对象

格式:类名 对象名;格式:类名 对象名; 举例:举例: Textfield inputTextfield input ;;

(( 22 )创建并初始化对象)创建并初始化对象 格式:格式: new new 构造方法(实参表);构造方法(实参表); 举例:举例: new Textfield(10)new Textfield(10) ;;

(( 33 )把)把 newnew 运算的返回值赋给引用的对象运算的返回值赋给引用的对象 格式:引用对象名格式:引用对象名 =new =new 构造方法(实参表)构造方法(实参表) 举例:举例: input=new Textfield(10);input=new Textfield(10);

对象创建时的简化格式—上述三步汇总 类名 对象名类名 对象名 =new =new 构造方法(构造方法( [[ 实参表实参表 ]] );); 举例: Textfield input=new Textfield(10);

Page 25: 第 4 章   学习目的、知识点、基本要求

4.44.4 对象的定义对象的定义 114.4.1 4.4.1 对象的创建对象的创建创建对象小结创建对象小结 创建对象有创建对象有 33 个部分组成:个部分组成: 声明对象、实例化、初始化声明对象、实例化、初始化 << 类名类名 ><>< 对象名对象名 >=new <>=new < 类名类名 >> (( [[参数列表参数列表 ]] )) 举例:举例:

(( 11 )声明对象:)声明对象: << 类名类名 ><>< 对象名对象名 >> 例:例: MyBox b1;MyBox b1;

(( 22 )实例化对象和初始化对象)实例化对象和初始化对象 << 对象名对象名 >=new <>=new < 类名类名 >( [>( [参数列表参数列表 ] )] ) 例:例: MyBox b2=new MyBox(20,20,100,100)MyBox b2=new MyBox(20,20,100,100)

Page 26: 第 4 章   学习目的、知识点、基本要求

4.44.4 对象的定义对象的定义 22

4.4.2 4.4.2 对象初始化的说明对象初始化的说明(( 11 )系统自动初始化(0,空格,空,假);)系统自动初始化(0,空格,空,假);(( 22 ))利用构造方法进行初始化;利用构造方法进行初始化;

* * 构造方法名与类名相同;构造方法名与类名相同;* * 构造方法的修饰符总是构造方法的修饰符总是 publicpublic ;;* * 构造方法不返回任何值,也不能有构造方法不返回任何值,也不能有 voidvoid 关键字;关键字;* * 每一个类可以有零个或多个构造方法;每一个类可以有零个或多个构造方法;* * 构造方法在创建时自动调用执行,一般不构造方法在创建时自动调用执行,一般不

能显式的直接调用。能显式的直接调用。 重点记忆 !

Page 27: 第 4 章   学习目的、知识点、基本要求

4.44.4 对象的定义对象的定义 22

4.4.2 4.4.2 对象初始化的说明对象初始化的说明

MyBox( )MyBox( ){ x=0;{ x=0; y=0;y=0; width=0;width=0;

height=0;height=0; }}(默认构造方法)(默认构造方法)

MyBox (int xx,int yy, intWidth,int Height )

{ x=xx;

y=yy;

width=Width;

height=Height;

}

(构造方法)(构造方法)

例如:例如: class MyBoxclass MyBox

Page 28: 第 4 章   学习目的、知识点、基本要求

4.44.4 对象的定义对象的定义 33

4.4.3. 4.4.3. 对象的使用对象的使用(( 11 )) << 对象名对象名 >>.. << 变量名变量名 >>(( 22 )) << 对象名对象名 >>.. << 方法名方法名 >([>([参数列表参数列表 ])])

例题例题 ::

Graphics g;Graphics g;

g.drawRect (x, y, width, height);g.drawRect (x, y, width, height);

Page 29: 第 4 章   学习目的、知识点、基本要求

4.44.4 对象的定义对象的定义 44

4.4.4. 4.4.4. 对象的清除对象的清除 把一个空值赋给要清除的对象。把一个空值赋给要清除的对象。 例如例如 ::

Rectangle r=new Rectangle(5,5,5,5);Rectangle r=new Rectangle(5,5,5,5);

…… ……

r = null;r = null;

返回

Page 30: 第 4 章   学习目的、知识点、基本要求

4.5 Java4.5 Java 程序的变量程序的变量 11

1 1 变量的定义:变量的定义:变量是内存中的存储区域,变量是内存中的存储区域,存储区的大小取决于变量的类型。存储区的大小取决于变量的类型。

2 2 变量按类型分类:变量按类型分类: 基本类型、复合类型;基本类型、复合类型;3 3 变量按定义位置分类:变量按定义位置分类:局部变量、类变量、实例变量局部变量、类变量、实例变量

4 4 变量的使用:变量的使用:必须先定义,后使用。必须先定义,后使用。

Page 31: 第 4 章   学习目的、知识点、基本要求

4.5 Java4.5 Java 程序的变量程序的变量 22

变量的定义:变量的定义:1) <1) < 类型类型 ><>< 变量名变量名 >[>[== << 表达式表达式 >][, <>][, < 变量名变量名 >[>[== << 表达式表达式 >]>]

…]…]

2)2) [< [<修饰符修饰符 >…]<>…]<类型名类型名 ><><变量名变量名 >[=<>[=<初始化表达式初始化表达式 >]>] [[,, <<变量名变量名 >[=<>[=<初始化表达式初始化表达式 >]]…>]]… ;;

举例:举例: int x;int x;

public float y;public float y;

private double a=0, b=0, c=10;private double a=0, b=0, c=10;

Page 32: 第 4 章   学习目的、知识点、基本要求

4.5 Java4.5 Java 程序的变量程序的变量 22

变量的作用域:((变量的有效范围变量的有效范围)) 1) 1) 局部变量—作用域是从定义位置至它所在的块语句局部变量—作用域是从定义位置至它所在的块语句 (由大括号括起来的一组语句)的结尾处。(由大括号括起来的一组语句)的结尾处。 2)2) 成员变量—作用域是在类体中但在方法体外。成员变量—作用域是在类体中但在方法体外。

< 修饰符 > class < 类名 >{ 成员变量; // 数据成员 成员方法; ……}

< 修饰符 > < 方法名 > (参数列表){ 局部变量; 方法体语句 ; ……}

Page 33: 第 4 章   学习目的、知识点、基本要求

4.5 Java4.5 Java 程序的变量程序的变量 33

成员变量的修饰:11 )静态变量(类变量)—由)静态变量(类变量)—由 staticstatic 修饰的变量。修饰的变量。22 )实例变量)实例变量——没有被没有被 staticstatic 修饰的成员变量。修饰的成员变量。33 )有名常量)有名常量——用用 finalfinal 修饰的变量=最终变量。修饰的变量=最终变量。 (局部变量或成员变量)(局部变量或成员变量)44 )暂时变量—)暂时变量— transienttransient 修饰,对象序列化时不考虑。修饰,对象序列化时不考虑。55 )共享变量—)共享变量— volatilevolatile 修饰,其值易被改动。修饰,其值易被改动。

Page 34: 第 4 章   学习目的、知识点、基本要求

例题例题 4-24-2 程序分析程序分析class Example4_2 // 类 1{ int x=1; // 实例变量初始化 static int y=2; // 类变量初始化}

public class Example4_1Demo //主类 2{

public static void main(String[] args) //主方法{

System.out.println(“y=”+Example4_2.y);// 类变量输出 y=2 Example0401.y*=2; // 类变量计算 ,y=4 Example4_2 o1=new Example4_2(); //o1 实例化 x=1,y=2 o1.x=10;

System.out.println(“o1.x=”+o1.x); // 输出 o1.x=10 System.out.println(“y=”+o1.y); // 输出 o1.y=4

Example4_2 o2=new Example4_2(); //o2 实例化 x=1,y=4System.out.println(“o2.x=”+o2.x); // 输出 o2.x=1System.out.println(“y=”+o2.y); // 输出 o2.y=4

}}

Page 35: 第 4 章   学习目的、知识点、基本要求

例题例题 4-34-3 程序分析程序分析class Example4_3{ static int x=1; final int CONS=x*100; public static void main(String[] args) { Example4_3 o1=new Example4_3();

System.out.println("o1.CONS="+o1.CONS); x++;

Example4_3 o2=new Example4_3();System.out.println("o2.CONS="+o2.CONS);

}}

Page 36: 第 4 章   学习目的、知识点、基本要求

例题例题 4-44-4 程序分析程序分析class Example4_4 { static int i=5; static int j=6; static int k; // 静态变量定义 static void aprint() // 静态方法 { System.out.println("k="+k); }

static // 静态初始化块 { if(i*5>=j*4)k=9; }

public static void main(String[] args) //主方法 { Example0403.aprint(); }}

Page 37: 第 4 章   学习目的、知识点、基本要求

例题例题 4-54-5 程序分析程序分析class Example4_5{ static int x; // 类变量 int y; // 实例变量 void aprint() { int k=0; //局部变量

x++;y++;k++;System.out.print("x="+x);System.out.print("y="+y);System.out.println("k="+k);

} void bprint() { aprint();

aprint(); } public static void main(String[] args) { Example4_5 o1=new Example4_5(); o1.bprint(); Example4_5 o2=new Example4_5(); o2.bprint(); }}

Page 38: 第 4 章   学习目的、知识点、基本要求

4.5 Java4.5 Java 程序的变量程序的变量 44

成员变量的访问:1) 1) 对实例变量的访问对实例变量的访问

在类体在类体外外访问访问 : <: < 引用类型变量名引用类型变量名 ><>< 实例变量名实例变量名>>

在类体在类体内内访问访问 : <: < 实例变量名实例变量名 >> this . <this . < 实例变量名实例变量名 >>

2) 2) 对类变量的访问对类变量的访问<< 类名类名 >.<>.< 类变量名类变量名 >>

在类体在类体内内访问访问 : <: < 类变量名类变量名 >>

Page 39: 第 4 章   学习目的、知识点、基本要求

例题例题 4-64-6 程序分析程序分析class Example4_6{ int x; void method(int x) { x=x+this.x; //x 是局部变量 , this.x 是实例变量 this.x=(int)(x>=0?Math.sqrt(x):Math.abs(x)); System.out.println("x="+this.x); } public static void main(String[] args) { Example4_6 eee=new Example4_6();

eee.method(25);eee.method(-1);

}} 返回

Page 40: 第 4 章   学习目的、知识点、基本要求

4.6 Java4.6 Java 程序的方法程序的方法 11方法定义[< 修饰符 >…]< 返回类型 ><方法名 >([形参表 ])<方法体 >

修饰符: static, final, abstract, native, synchronized,public, private, protected

abstruct :抽象方法只提供方法名、形参表、返回类型等它不提供方法的实现。

包含抽象方法的一定是抽象类: ( 1 )抽象类不能生成实例 ( 2 )抽象类的子类必须实现父类中声明的所有抽象

方法或者自己也定义成 abstruct 。返回类型:返回数据类型(基本、引用),或没有返回值形参表:参数表可有可无,多个时用逗号分隔。方法体:所有的方法代码放在 { }内,它代表具体行为。

Page 41: 第 4 章   学习目的、知识点、基本要求

例题例题 4-74-7程序分析程序分析class Example4_7{ private int hour; private int minute; private int second;

public void setMyTime(int h,int m,int s) { hour=((h>=0&&h<24)?h:0); minute=((m>=0&&m<60)?m:0); second=((s>=0&&s<60)?s:0); } public int getHour(){ return hour;} public int getMinrte(){return minute;} public int getSecond(){return second;}

public String toString() { return((hour==12||hour==0?12:hour%12)+

":"+(minute<10?"o":"")+minute+ ":"+(second<10?"0":"")+second+ (hour<12?"AM":"PM"));

}}

Page 42: 第 4 章   学习目的、知识点、基本要求

例题例题 4-74-7程序分析程序分析public class Example4_7Demo{ public static void main(String args[]) { Example4_7 time=new Example4_7();

time.setMyTime(17,25,50);System.out.println("time="+time.toString());

}}

Page 43: 第 4 章   学习目的、知识点、基本要求

4.6 Java4.6 Java 程序的方法程序的方法 22

方法调用1) 在类体内调用:

<方法名>([实参表 ]) 2) 在类体外调用:

<对象名>.<方法名>([实参表 ])<类名>.<方法名>([实参表 ])

构造方法(复习:特征是方法名与类名相同)

Page 44: 第 4 章   学习目的、知识点、基本要求

4.6 Java4.6 Java 程序的方法程序的方法 33

方法重载( overload )

一个类内可以定义几个方法名相同而形参不同(数目不同、类型不同或者次序不同)的几个方法,这种情形称为重载。 在方法调用时到底调用哪个方法是由编译器在编译时完成。

Page 45: 第 4 章   学习目的、知识点、基本要求

4.6 Java4.6 Java 程序的方法程序的方法 44

类方法(静态方法) 用 static 修饰的方法称为类方法。( 1 )在类体内不管是实例方法还是类方法

都可以直接调用其他类方法;( 2 )在类体外则可以通过实例也可以通过

类名调用类方法;( 3 )实例方法与类方法不同,实例方法总

是通过实例调用。

Page 46: 第 4 章   学习目的、知识点、基本要求

例题例题 4-84-8程序分析程序分析class Example4_8{ int i; void print(){i++;System.out.println(“i=”+i);}// 实例方法 static Example4_8 method1() // 类方法 { Example4_8 eee=new Example4_8(); // 创建实例对象 eee.print(); // 调用实例方法 (i=1) return eee; } static void method2(Example4_8 o) // 类方法 { o.print(); } //引用作为形参 , 调用实例方法 (i=2)}

public class Example4_8Demo { public static void main(String[] args)

{ Example4_8 eee=Example4_8.method1(); Example4_8.method2(eee);}

}

Page 47: 第 4 章   学习目的、知识点、基本要求

4.7 4.7 以对象为单位的信息传递以对象为单位的信息传递11用对象作为参数 ---例题 9

class Example4_91{ int x,y;}class Example4_92{ void method1(int x,int y) //参数为基本类型 { x=1; y=2; } void method2(Example4_91 obj) //参数为引用类型 { obj.x=10; obj.y=20; }}

Page 48: 第 4 章   学习目的、知识点、基本要求

4.7 4.7 以对象为单位的信息传递以对象为单位的信息传递11

class Example4_93{ Example4_93() { Example4_91 o1=new Example4_91(); //o1.x=0,o1.y=0 Example4_92 o2=new Example4_92();//o2.x=0,o2.y=0 o2.method1(o1.x,o1.y); //o2.x=1,o2.y=2 System.out.println("x="+o1.x+" "+"y="+o1.y); o2.method2(o1); //o1→ obj,(o1.x=0,o1.y=0)

//obj.x=o1.x=10,obj.y=o1.y=20 System.out.println("x="+o1.x+" "+"y="+o1.y); } public static void main(String[] args) { new Example4_93(); } // 执行 Example4_93 方法}

用对象作为参数 ---例题 9

Page 49: 第 4 章   学习目的、知识点、基本要求

4.7 4.7 以对象为单位的信息传递以对象为单位的信息传递 22

class Example4_10{ double r,i; public Example4_10(double r, double i) { this.r=r; this.i=i; } public Example4_10 add(Complex c) { return new Complex(r+c.r, i+c.i); } public void print() { System.out.println(r+"+"+i+"i"); }}class Example4_10Demo { public static void main(String[] args) { Example4_10 c1=new Example4_10(1,2); //c1.r=1,c1.y=2 Example4_10 c2=new Example4_10(3,4); //c2.r=3,c2.y=4 Example4_10 c3=new c1.add(c2); c3.print(); }}

将对象作为返回值 --- 例题 10

// c=c2;// (r+c.r,i+c.i)// (c1.r+c2.r,c1.i+c2.i)// c3.r=4, c3.i=6

Page 50: 第 4 章   学习目的、知识点、基本要求

本章难点说明本章难点说明

静态与非静态成员方法的区分静态与非静态成员方法的区分

类变量与实例变量的区分类变量与实例变量的区分

构造方法的继承说明构造方法的继承说明

Page 51: 第 4 章   学习目的、知识点、基本要求

类变量与实例变量的区分类变量与实例变量的区分11 产生的时间不同产生的时间不同:

实例变量在实例化对象时产生;类变量在定义时产生。

22 变量的所属性不同:变量的所属性不同:类变量是所有对象共有的;实例变量是各个对象所独有的。

33 访问方式不同:访问方式不同:类变量可以通过类名访问类变量 __即 :

类名 . 类变量 ( 或者 ) 对象名 . 类变量实例变量是通过对象名进行访问的 __即 :

对象名 . 实例变量 返回

Page 52: 第 4 章   学习目的、知识点、基本要求

静态成员方法与非静态成员方法的区分静态成员方法与非静态成员方法的区分1 1 属性不同:属性不同:

静态成员方法属于整个类静态成员方法属于整个类 ,, 非静态成员方法在对象被创建非静态成员方法在对象被创建时具体属于某个对象。时具体属于某个对象。

2 2 访问方式不同:访问方式不同:(( 11 )静态成员方法使用)静态成员方法使用 ::

类名类名 .. 静态成员方法 或者 对象名静态成员方法 或者 对象名 .. 静态成员方法静态成员方法(( 22 )非静态成员方法的使用)非静态成员方法的使用 ::

对象名对象名 .. 非静态成员方法。非静态成员方法。3 3 访问的限制:访问的限制:

(( 11 )静态方法只能访问静态数据成员和静态方法,不能)静态方法只能访问静态数据成员和静态方法,不能访问非静态数据成员和静态方法;访问非静态数据成员和静态方法;(( 22 )非静态方法可以访问静态或非静态数据成员及静态)非静态方法可以访问静态或非静态数据成员及静态方法或非静态方法。方法或非静态方法。

4 4 方法的覆盖方法的覆盖(( 11 )静态方法不能被覆盖;)静态方法不能被覆盖;(( 22 )非静态方法可以被覆盖。)非静态方法可以被覆盖。

返回

Page 53: 第 4 章   学习目的、知识点、基本要求

构造方法的继承说明构造方法的继承说明1 1 子类无条件地继承,子类无条件地继承,继承父类的不含参数的构继承父类的不含参数的构

造方法;造方法;2 2 如果子类自己没有构造方法,如果子类自己没有构造方法,则它将继承父类则它将继承父类

的无参构造方法作为自己的构造方法。的无参构造方法作为自己的构造方法。3 3 如果子类自己定义了构造方法,如果子类自己定义了构造方法,则在创建新对则在创建新对

象时,它将先执行继承自父类的无参数构造方法,象时,它将先执行继承自父类的无参数构造方法,然后再执行自己的构造方法。然后再执行自己的构造方法。

4 4 对于父类的含参数构造方法,对于父类的含参数构造方法,子类可以通过在子类可以通过在自己的构造方法中使用自己的构造方法中使用 supersuper关键字来调用它,关键字来调用它,但这个调用语句必须是子类构造方法的第一个可但这个调用语句必须是子类构造方法的第一个可执行语句。执行语句。

Page 54: 第 4 章   学习目的、知识点、基本要求

第第 44 章 小 结章 小 结

Page 55: 第 4 章   学习目的、知识点、基本要求