Java程序设计 第7章 对象和类.

Slides:



Advertisements
Similar presentations
网络应用程序设计 2014 JavaBean. JavaBean 及其属性 JavaBean 就是一种 Java 的组件技术 JavaBean 是 Java 类 JavaBean 通过约定的方法名实现属性功能 简单属性 void setXxx(Type value) Type getXxx() boolean.
Advertisements

第6章 对象和类.
第3章 使用类和对象编程 软 件 学 院 朱士明 副教授.
第4讲 使用类和对象编程(二) 对象 静态变量和静态方法 再谈方法.
项目三 Java面向对象程序设计 任务一 了解面向对象程序设计的基本概念 任务二 掌握类的使用方法 任务三 熟悉对象的创建与使用方法
第4章 Java中的几个关键字 Java 语言编程技术.
西南科技大学网络教育系列课程 高级语程序设计(Java) 第四章 类与对象.
第3章 面向对象的编程技术.
第四章 类 和 对 象.
第4章 类 和 对 象.
单元二:面向对象程序设计 任务二:借书卡程序设计.
第四章 对象与类 掌握面向对象程序设计语言的特点 理解对象、类,类和对象的关系 掌握类,成员变量,方法的定义 掌握构造方法的定义
Java软件开发基础 4. 面向对象的程序设计基础.
第3章 面向对象程序设计.
配合< Java面向对象程序设计>例子源代码一起使用
JAVA 编 程 技 术 主编 贾振华 2010年1月.
Java的面向对象程序设计.
第 9 章 物件的建構.
第一章 面向对象程序设计.
设计模式可以帮助我们改善系统的设计,增强 系统的健壮性、可扩展性,为以后铺平道路。
Java面向对象程序设计 第19讲(期末复习一)
第五章 Java面向对象编程基础 类:现实世界中实体的抽象集合。 5.1定义类 定义类的过程就是定义类的属性和服务的过程;
第14章 c++中的代码重用.
全国计算机等级考试 二级基础知识 第二章 程序设计基础.
类与对象 Java 实用技术4 类与对象
第10讲 Java面向对象编程基础(4) 教学目标 主要内容.
第4章 类、对象和接口 4.1 编程语言的几个发展阶段 4.11 abstract 类和abstract方法 4.2 类
行 言 面向对象程序设计基础(下) 类属性 类方法 包 限定符 接口 内部类.
第六章 JAVA语言中的面向对象特性 6.1 类 6.2 对象 6.3 面向对象的特性 6.4 抽象类、接口和Inner Class.
主讲:朱红英 tel: java程序设计 主讲:朱红英 tel:
第四章 Java面向对象程序设计.
面向对象的概念 构造方法 this和static关键字
3.3 Java的非访问控制符 Java的非访问控制符 static 静态修饰符 修饰属性和方法 abstract 抽象修饰符 修饰类和方法
JAVA 面向对象基础知识 主要内容: 1.面向对象基本概念 2.Java的类与对象 3.成员变量与封装 成员方法.
EBNF 请用扩展的 BNF 描述 C语言里语句的结构; 请用扩展的 BNF 描述 C++语言里类声明的结构;
CHAPTER 9 建構方法 ROBERT.
第4章 类、对象和接口 4.1 编程语言的几个发展阶段 4.2 类 4.3 对象 4.4 static 关键字 4.5 this 关键字
Java习题解析.
管理信息结构SMI.
Java程序设计 第9章 继承和多态.
走进编程 程序的顺序结构(二).
辅导课程六.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
第二章 Java语言基础.
用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
第七章 操作符重载 胡昊 南京大学计算机系软件所.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
$9 泛型基础.
C#面向对象程序设计 $6 深入理解类.
Classes (1) Lecture 6.
第八讲 面向对象程序设计(一) 精品教程《C#程序设计与应用(第2版)清华大学出版社 谭恒松 主编
分裂对象模型 C++ otcl.
<编程达人入门课程> 本节内容 内存的使用 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群: ,
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
本节内容 类成员的访问控制 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第九节 赋值运算符和赋值表达式.
Chapter 18 使用GRASP的对象设计示例.
辅导课程十五.
第二章 Java基本语法 讲师:复凡.
第7章 模板 陈哲 副教授 南京航空航天大学 计算机科学与技术学院.
C++语言程序设计 C++语言程序设计 第八章 继承 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
JAVA 程式設計與資料結構 第三章 物件的設計.
對於成員(member)存取權的限制 成員的資料被毫無限制的存取,任誰都可以指定任意值給成員,Java語言為了防止這種現象的產生,規定:有一種成員的資料不能任由類別外部的任何人隨意存取。
创建、启动和关闭Activity 本讲大纲: 1、创建Activity 2、配置Activity 3、启动和关闭Activity
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
Presentation transcript:

Java程序设计 第7章 对象和类

学习目标 理解对象和类以及它们之间的关系 掌握如何定义类并创建类的对象 了解类和对象的UML表示 理解构造函数的作用 理解对象引用,掌握如何向方法传递对象引用 掌握getter、setter方法 掌握this的含义和使用 理解实例变量和方法,静态变量、常量和方法 理解类中变量的作用域 使用对象作为数组元素

面向对象的程序 C语言的面向过程的语言。面向过程的核心: Java语言是面向对象的语言。面对对象的核心: 数据结构 算法 数据加工 封装 继承 多态 对象协作

类和对象 对象(object)表示现实世界中可以明确识别的实体。例如,学生、圆、按钮等。对象具有状态和行为。 类(class)定义了同一类对象共有的属性和方法。 类是对象的模板、蓝图。对象是类的实例。 状态 (变量) 行为 (方法) 姓名:张三 学号:0001 身高:1.73 学习 工作 娱乐

示例 下面是一个圆类: class Circle { double radius = 1.0; Circle() { } Circle(double r) { radius = r; double findArea() { return radius * radius * 3.14159; } } 数据字段 构造函数 方法

类和对象的UML表示 类的UML表示 类名 数据字段 构造函数 方法 对象的UML表示 对象名:类名 数据字段值

构造函数 构造函数(constructor)是一段初始化代码,用于创建对象。 语法 缺省构造函数 constructorDeclaration : modifieropt className (parameterList) { statementsopt } 缺省构造函数 如果类未定义任何类型的构造函数,编译器会自动提供一个不带参数的构造函数。 如果已存在带参数的构造函数,则不会提供不带参数的构造函数。

创建对象 使用new操作符创建对象。 Java虚拟机为新创建的对象分配内存,并返回对象的引用。 语法: 例如: 实例变量被赋予默认初值 new ClassName(actualParameterListopt); 例如: new Circle(); //调用无参构造函数 new Circle(5); //调用带有一个参数的构造函数 Java虚拟机为新创建的对象分配内存,并返回对象的引用。 实例变量被赋予默认初值 实例变量显式初始化 返回对象引用

引用变量 对象通过引用变量(reference variable)进行访问,引用变量中存储的是对象的引用(reference)。 声明引用变量 ClassName objectRefVar; 例如: Circle myCircle; 引用变量赋值 objectRefVar = new ClassName(); myCircle = new Circle();

在一条语句中声明变量和创建对象 合并为一句 ClassName objectReference = new ClassName(); 例如: Circle myCircle = new Circle(); 2.创建对象,返回对象的引用 3.将对象的引用赋值给变量myCircle 1.声明一个引用变量,变量类型为Circle,变量名为myCircle

访问对象的实例变量和实例方法 访问对象的实例变量 调用对象的实例方法 objectRefVar.data 例如: myCircle.radius访问对象的radius数据字段 调用对象的实例方法 objectRefVar.method(arguments) myCircle.findArea()调用对象的findArea方法

例 声明类并创建对象 编写程序,定义Circle类,创建Circle对象。 创建一个半径为5的圆。 创建一个半径为1的圆。 显示两个圆的半径和面积。 将第二个圆的半径改为100,显示其半径和面积。 Example:v1/TestCircle.java, v1/Circle.java

基本类型变量和引用类型变量的区别 变量表示存储数据的内存单元。 基本类型变量存储的是基本类型的值。 引用类型变量存储的是对象的引用。当变量未引用任何对象时,它是值为null。 1 基本类型 int i = 1; i null 引用类型 Circle c; c 对象的引用 Circle c = new Circle();

赋值的区别 当进行变量赋值时 基本类型变量赋值时,变量的实际值赋值给另一个变量。 引用类型变量赋值时,对象的引用赋值给另一个变量。 1 i 2 j 赋值前 int i = 1; int j = 2; 对象的引用 引用类型 c1 c2 int c1 = new Circle(); int c2 = new Circle(); 不再被引用的对象,将被运行时系统自动回收 c1 = c2; 对象的引用 c1 c2 2 i j i = j; 赋值后

例 使用Java类库中的类 使用javax.swing程序包中的JFrame类创建两个窗体。设置窗体的标题、大小和位置,并显示。 Example:TestFrame.java

类成员访问控制符 类中代码可以访问自身的所有成员。 其它类中的代码访问成员,受访问控制符的限制: private 只能当前类自身可以访问。 package 无访问修饰符的成员,只有相同包中的代码可以访问。 protected 子类、同一包中的类可以访问。 public 所有其它类都可以访问。 访问控制是在类的层次上进行的,而不是在每个对象上。

Getter和Setter方法 通常为私有(private)成员变量提供Getter和Setter方法。 如果成员变量为DateType propertyName Getter方法用于获取成员变量的值 签名: public DateType getPropertyName() Setter方法用于设置成员变量的值 签名: public void setPropertyName(DateType value) Example:v2/TestCircle.java, v2/Circle.java

将对象传递给方法 与传递数组一样,传递对象实际是传递对象的引用。 基本数据类型传递的是实际值的拷贝,修改形参,不影响实参。 引用类型变量传递的是对象的引用,通过形参修改对象,将改变实参引用的对象。 实参 : 1 形参 : 1 copy 基本类型 实参 : ref 形参 : ref copy object 引用类型 Example:v2/TestPassObject.java

实例变量与静态变量 实例变量(instance variable)未用static修饰的成员变量,属于类的具体实例(对象),只能通过引用变量访问。 静态变量(static variable)是用static修饰的变量,在一个类的所有实例间共享,也称类变量。静态变量可以通过类名访问。 表示private + 表示public 下划线 表示static 1 5 2 radius numberOfObject

静态常量 静态常量是用static final修饰的变量。例如,Math类中的常量PI定义为: public static final double PI = 3.14159265358979323846;

静态方法 静态方法(static method)是用static修饰的方法。 例如: 静态方法可以通过类名调用。 main JOptionPane.showMessageDialog JOptionPane.showInputDialog Math.random 静态方法可以通过类名调用。 静态方法只能访问类的静态成员,不能访问类中的实例成员。

例 使用实例、静态的变量和方法 为v2.Circle添加一个静态变量,保存创建Circle对象的数量。 在main方法中创建circle1和circle2两个对象。 修改实例和静态变量,并查看修改的结果。 Example:v3/TestCircle.java, v3/Circle.java

变量的作用域 成员变量(实例变量和静态变量)的作用域是整个类,与声明的位置无关。 如果一个变量的初始化依赖于另一个变量,则另一个变量必须在前面声明 例如: public class Foo { int i; int j = i + 1; } 如果一个局部变量具有与类中的变量相同的名称,那么局部变量优先,成员变量被隐藏。 Example:TestScope.java

this关键字 this表示当前对象 调用当前类的其它构造函数。 在实例方法中,实例变量被局部变量或方法参数隐藏,可以通过this.instanceVariable访问实例变量。 调用当前类的其它构造函数。 this(actualParameterListopt) 必须是构造函数的第1条语句。 Example:v4/TestCircle.java, v4/Circle.java

对象数组 与基本数据类型一样,可以声明并创建对象数组。 当创建对象数组时,数组元素的缺省初值为null。 Circle[] circleArray = new Circle[10]; for(int i = 0; i < circleArray.length; i++) { circleArray[i] = new Circle(); } 数组的引用 circleArray circleArray[0] circleArray[1] … circleArray[9] Circle对象0 Circle对象1 … Circle对象9

例 汇总圆的面积 编写程序,将一个Circle数组的面积相加。 程序创建由10个Circle对象组成的数组 然后以随机数初始化圆的半径 显示数组中所有圆的总面积 Example:v4/TotalArea.java

例 使用Loan类 编写程序,实现一个下面的类并测试。 Example:Loan.java, TestLoanClass.java 年利率,缺省值为2.5 贷款年数,缺省值为1 贷款金额,缺省值为1000 贷款日期 构建缺省的Loan对象 使用给定的值,构建Loan对象 获取年利率 获取贷款年数 获取贷款金额 获取贷款日期 设置年利率 设置贷款年数 设置贷款金额 设置贷款日期 计算月还款额 计算年还款额 Example:Loan.java, TestLoanClass.java

例 整数栈 编写程序,实现整数栈的数据结构。 capacity-1 … 85 10 21 size-1 1 栈顶 42 Example:StackOfIntegers.java, TestStackOfIntegers.java