JAVA全套简明教程ch.ppt_第1页
JAVA全套简明教程ch.ppt_第2页
JAVA全套简明教程ch.ppt_第3页
JAVA全套简明教程ch.ppt_第4页
JAVA全套简明教程ch.ppt_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

YANGLINBNUITC Java程序设计 第7章 对象和类 学习目标 o 理解对象和类以及它们之间的关系 o 掌握如何定义类并创建类的对象 o 了解类和对象的UML表示 o 理解构造函数的作用 o 理解对象引用,掌握如何向方法传递对象引用 o 掌握getter、setter方法 o 掌握this的含义和使用 o 理解实例变量和方法,静态变量、常量和方法 o 理解类中变量的作用域 o 使用对象作为数组元素 面向对象的程序 o C语言的面向过程的语言。面向过程的核心: n数据结构 n算法 n数据加工 o Java语言是面向对象的语言。面对对象的核心: n封装 n继承 n多态 n对象协作 类和对象 o 对象(object)表示现实世界中可以明确识别的实体。 例如,学生、圆、按钮等。对象具有状态和行为。 o 类(class)定义了同一类对象共有的属性和方法。 o 类是对象的模板、蓝图。对象是类的实例。 状态 (变量) 行为 (方法) 姓名:张三 学号:0001 身高:1.73 学习 工作 娱乐 class Circle double radius = 1.0; Circle() radius = 1.0; Circle(double r) radius = r; double findArea() return radius * radius * 3.14159; 示例 o 下面是一个圆类: 数据字段 方法 构造函数 类和对象的UML表示 类的UML表示 类名 数据字段 方法 对象的UML表示 对象名:类名 数据字段值 构造函数 构造函数 o 构造函数(constructor)是一段初始化代码,用于创 建对象。 o 语法 constructorDeclaration : modifieropt className (parameterList) statementsopt o 缺省构造函数 n如果类未定义任何类型的构造函数,编译器会自动提供 一个不带参数的构造函数。 n如果已存在带参数的构造函数,则不会提供不带参数的 构造函数。 创建对象 o 使用new操作符创建对象。 语法: new ClassName(actualParameterListopt); 例如: new Circle(); /调用无参构造函数 new Circle(5); /调用带有一个参数的构造函数 o Java虚拟机为新创建的对象分配内存,并返回对象的 引用。 n实例变量被赋予默认初值 n实例变量显式初始化 n返回对象引用 引用变量 o 对象通过引用变量(reference variable)进行访问, 引用变量中存储的是对象的引用(reference)。 o 声明引用变量 ClassName objectRefVar; 例如: Circle myCircle; o 引用变量赋值 objectRefVar = new ClassName(); 例如: myCircle = new Circle(); 在一条语句中声明变量和创建对象 o 合并为一句 ClassName objectReference = new ClassName(); 例如: Circle myCirclenew Circle();= 1.声明一个引用变量,变量类型为Circle,变量名为myCircle 2.创建对象,返回对象的引用 3.将对象的引用赋值给变量myCircle 访问对象的实例变量和实例方法 o 访问对象的实例变量 objectRefVar.data 例如: myCircle.radius访问对象的radius数据字段 o 调用对象的实例方法 objectRefVar.method(arguments) 例如: myCircle.findArea()调用对象的findArea方法 例 声明类并创建对象 o 编写程序,定义Circle类,创建Circle对象。 n创建一个半径为5的圆。 n创建一个半径为1的圆。 n显示两个圆的半径和面积。 n将第二个圆的半径改为100,显示其半径和面积。 Example:v1/TestCircle.java, v1/Circle.java 基本类型变量和引用类型变量的区别 o 变量表示存储数据的内存单元。 n基本类型变量存储的是基本类型的值。 n引用类型变量存储的是对象的引用。当变量未引用任何 对象时,它是值为null。 1 基本类型 int i = 1; i null 引用类型 Circle c; c 对象的引用 Circle c = new Circle(); c 赋值的区别 o 当进行变量赋值时 n基本类型变量赋值时,变量的实际值赋值给另一个变量。 n引用类型变量赋值时,对象的引用赋值给另一个变量。 c1 = c2; 对象的引用 c1 对象的引用 c2 2i 2j i = j; 赋值后 不再被引用的对 象,将被运行时 系统自动回收 1 基本类型 i 2j 赋值前 int i = 1; int j = 2; 对象的引用 引用类型 c1 对象的引用c2 int c1 = new Circle(); int c2 = new Circle(); 例 使用Java类库中的类 o 使用javax.swing程序包中的JFrame类创建两个窗体 。设置窗体的标题、大小和位置,并显示。 Example:TestFrame.java 类成员访问控制符 o 类中代码可以访问自身的所有成员。 o 其它类中的代码访问成员,受访问控制符的限制: nprivate 只能当前类自身可以访问。 npackage 无访问修饰符的成员,只有相同包中的代码可以访问。 nprotected 子类、同一包中的类可以访问。 npublic 所有其它类都可以访问。 o 访问控制是在类的层次上进行的,而不是在每个对象上 。 Getter和Setter方法 o 通常为私有(private)成员变量提供Getter和Setter方 法。 o 如果成员变量为DateType propertyName nGetter方法用于获取成员变量的值 签名: public DateType getPropertyName() nSetter方法用于设置成员变量的值 签名: public void setPropertyName(DateType value) Example:v2/TestCircle.java, v2/Circle.java 将对象传递给方法 o 与传递数组一样,传递对象实际是传递对象的引用。 n基本数据类型传递的是实际值的拷贝,修改形参,不影 响实参。 n引用类型变量传递的是对象的引用,通过形参修改对象 ,将改变实参引用的对象。 实参 : 1 形参 : 1 copy 基本类型 实参 : ref 形参 : ref copy object 引用类型 Example:v2/TestPassObject.java 实例变量与静态变量 o 实例变量(instance variable)未用static修饰的成 员变量,属于类的具体实例(对象),只能通过引用变 量访问。 o 静态变量(static variable)是用static修饰的变量 ,在一个类的所有实例间共享,也称类变量。静态变 量可以通过类名访问。 1 5 2 radius radius numberOfObject - 表示private + 表示public 下划线 表示static 静态常量 o 静态常量是用static final修饰的变量。例如,Math 类中的常量PI定义为: public static final double PI = 3.14159265358979323846; 静态方法 o 静态方法(static method)是用static修饰的方法。 例如: nmain nJOptionPane.showMessageDialog nJOptionPane.showInputDialog nMath.random o 静态方法可以通过类名调用。 o 静态方法只能访问类的静态成员,不能访问类中的实 例成员。 例 使用实例、静态的变量和方法 o 为v2.Circle添加一个静态变量,保存创建Circle对 象的数量。 n在main方法中创建circle1和circle2两个对象。 n修改实例和静态变量,并查看修改的结果。 Example:v3/TestCircle.java, v3/Circle.java 变量的作用域 o 成员变量(实例变量和静态变量)的作用域是整个类, 与声明的位置无关。 o 如果一个变量的初始化依赖于另一个变量,则另一个 变量必须在前面声明 例如: public class Foo int i; int j = i + 1; o 如果一个局部变量具有与类中的变量相同的名称,那 么局部变量优先,成员变量被隐藏。 Example:TestScope.java this关键字 o this表示当前对象 n在实例方法中,实例变量被局部变量或方法参数隐藏, 可以通过this.instanceVariable访问实例变量。 o 调用当前类的其它构造函数。 nthis(actualParameterListopt) n必须是构造函数的第1条语句。 Example:v4/TestCircle.java, v4/Circle.java 对象数组 o 与基本数据类型一样,可以声明并创建对象数组。 o 当创建对象数组时,数组元素的缺省初值为null。 Circle circleArray = new Circle10; for(int i = 0; i circleArray.length; i+) circleArrayi = new Circle(); circleArray0 circleArray1 circleArray9 数组的引用 circleArray Circle对象0 Circle对象1 Circle对象9 例 汇总圆的面积 o 编写程序,将一个Circle数组的面积相加。 n程序创建由10个Circle对象组成的数组 n然后以随机数初始化圆的半径 n显示数组中所有圆的总面积 Example:v4/TotalArea.java 例 使用Loan类 o 编写程序,实现一个下面的类并测试。 年利率,缺省值为2.5 贷款年数,缺省值为1 贷款金额,缺省值为1000 贷款日期 构建缺省的Loan对象 使用给定的值,构建

温馨提示

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

评论

0/150

提交评论