2013java程序设计-6-对象和类

上传人:子 文档编号:52096561 上传时间:2018-08-18 格式:PPT 页数:79 大小:1.76MB
返回 下载 相关 举报
2013java程序设计-6-对象和类_第1页
第1页 / 共79页
2013java程序设计-6-对象和类_第2页
第2页 / 共79页
2013java程序设计-6-对象和类_第3页
第3页 / 共79页
2013java程序设计-6-对象和类_第4页
第4页 / 共79页
2013java程序设计-6-对象和类_第5页
第5页 / 共79页
点击查看更多>>
资源描述

《2013java程序设计-6-对象和类》由会员分享,可在线阅读,更多相关《2013java程序设计-6-对象和类(79页珍藏版)》请在金锄头文库上搜索。

1、Java程序设计第六章:类和对象1Java程序设计学习目标: 理解类和对象的概念及两者间的区别 掌握类的定义以及类之间的关系描述,认识对应的UML基 本图示 理解构造方法的作用,能够使用new运算符实例化一个对 象 理解对象的引用,掌握通过变量名访问引用对象的成员变 量和方法 理解并掌握变量的作用域 理解关键字this的用法 掌握static的作用 理解并掌握方法的声明和调用 理解包的概念并掌握包的作用2Java程序设计6.1.1 面向对象的基本概念 什么是对象 u在面向对象的方法学中,“对象”是现实世界的实体或概 念在计算机逻辑中的抽象表示。 u对象的最主要特点是以数据为中心,它是一个集成了

2、数据 和其上操作的封装。封装隐藏了类的内部实现细节,强制 类的使用者通过规定的接口访问对象,提高了代码的可维 护性。 u对象是具有唯一对象名和固定对外接口的一组属性和操作 的集合,用来模拟组成或影响现实世界问题的一个或一组 因素。Java程序设计3过程式的程序=算法+数据;面向对象的程序=对象+消息。6.1.2 类和对象 对象 u对象就是组成现实世界的个体,他们之间存在着错综复杂 的关系,正是这种关系的存在构成了丰富多彩的世界。 面向对象的分析 u一些对象具有相似的特征 u一些对象之间有相互作用 u就是要把这些对象以及对象之间的关系找出来。 类 u分析这些个体,可以把他们归纳为不同的类型,例如

3、学校 里的课程、银行中的业务等。这种利用归纳的方法将个体 分类的过程实质上就是面向对象技术中的创建类的过程。 类是对一组有相同特性(属性)和相同行为(方法)的对 象的抽象。4Java程序设计6.2使用JDK的类表6-1 JDK的一些包包作用java.lang包含Java语言的基础类,无需用import加载java.lang.reflect提供类和接口,以获取关于类和对象的反射信息java.io通过数据流、序列化和文件系统提供系统输入和输出java.text提供以与自然语言无关的方式来处理文本、日期、数字和 消息的类和接口 java.util包含集合框架、遗留的 collection 类、事件模

4、型、日期和 时间设施、国际化和各种实用工具类(字符串标记生成器 、随机数生成器和位数组) java.util.concurrent 在并发编程中很常用的实用工具类提供网络编程的类和接口javax.swing提供支持“Swing“GUI组件的类。java.sql提供有关数据库访问的接口和类Java程序设计5实例一:使用Math类Java程序设计6/程序6-1:一个利用Math类产生随机数的程序 public class RandomDemo public static void main(String args) for(int i=0;i academicRecordList; public

5、class AccountString id; /一个String类型的账户唯一性表示private String name; /账户所有人的姓名private int balance; /用整数表示的该账户的当前余额 6.3.3属性声明(cont.)元素必选作用 public | private | protected|default访问控制范围修饰符加上缺省没有任何访问控制范围 修饰符的四种情况,规定了成员变量的可见范围 static声明该变量为类变量,见4.4.3一节final声明该变量为最终变量,一旦赋值则不可修改transient标记该变量不被串行化,既变量值不能用于基于 socke

6、t的网络访问 volatile一个变量被声明为 volatile,表明它可以被异步修改, 编程时需要注意 type 每个变量必须规定它的类型,可以是基本类型(int, float, double等),也可以是引用类型(某种类,如 Student, List等) name变量的名称,要符合标识符的规定,在同一个作用域 范围内名称不能重复。15Java程序设计6.3.3属性声明(cont.)1. 访问控制范围修饰符 u一个类所定义的属性被其他对象访问所加的限制表6-4 访问控制范围修饰符可见区域名称修饰符类子类包所有类公共public友好-保护protected私有private 16Java程序

7、设计 2 属性的访问 u对可直接访问的类属性可以通过“类名.类属性”访 问,如System.out,也可通过“对象引用名.类属 性名”访问; u对可直接访问的对象属性可以通过“对象引用名. 属性名”访问; u在声明类时,一般为那些需要进行存取访问的属 性定义对应的getXxx()、setXxx()方法用来对 属性的存取访问,而不是直接访问属性值;17Java程序设计public class Studentprivate String name;public String getName()return this.name;public void setName(String name) 封装和

8、信息隐藏 问题的提出:如下例: public class Person public int age; public String name; 客户端程序可以直接访问内部的数据: up1.age = -30;/错误的年龄 up1.name = “Mike”;18Java程序设计封装和信息隐藏(c.) 为了实现良好的封装性,我们通常将类的成员变量声明 为private,再通过特定的方法来对这个变量进行访问 。 对一个变量的操作,一般都有读取和赋值操作,我们分 别定义两个方法来实现这两种操作,一个是getXxx()( Xxx表示要访问的成员变量的名字),用来读取这个成 员变量操作,另一个是setX

9、xx()用来对这个成员变量赋 值,可以加一些控制代码,使其合法性。 一个类通常就是一个小的模块,让模块公开必须要让外 界知道的内容,而隐藏其它的内容。我们在进行程序的 详细设计时,应尽量避免一个模块直接修改或操作另一 个模块的数据,模块设计追求强内聚(许多功能尽量在 类的内部独立完成,不让外面干预),弱耦合(提供给 外部尽量少的方法调用)。 19Java程序设计 Java名字空间及访问规则 upublic: 任何其它类、对象只要可以看到这个类的话,那 么它就可以存取变量的数据,或使用方法。 uprotected:同一类,同一包可以使用。不同包的类要使用 ,必须是该类的子类。 uprivate:

10、不允许任何其他类存取和调用。 u(default,前边没有修饰字的情况):在同一程序包中出现 的类才可以直接使用它的数据和方法.20Java程序设计 变量作用域Java程序设计21表6-5 变量作用域位置类方 法类初始 化块所有对 象成员方 法代码 块备注类变量该类的所有 实例 成员变量所有成员方 法 方法参数同一方法内局部变量同一代码块异常捕获 参数异常处理块 内Java程序设计22/程序6-3:变量的作用域 public class TestScope int x;public static void main(String args) int x = 12; int q = 96; /

11、x和q都可用int x = 3;/错误的定义,Java中不允许有这种嵌套定义System.out.println(“x is “+x); System.out.println(“q is “+q);q = x; /* 错误的行,只有x可用, q 超出了作用域范围 */System.out.println(“x is “+x); public int getX()return x; /返回的是实例的成员变量x的值 6.3.4为类添加方法方法 u 方法是自包含的有名代码块,并且具有可重用的特性 。方法由对象通过调用方法名得到执行,一些方法有 某种类型的返回值,一些没有。有返回值的方法通常 在表达式

12、中被调用,作为表达式的一部分参与运算; 而没有返回值的方法通常在调用语句中被调用,使它 完成某种功能。 方法调用 u System.out.println(“Welcome!“); u int max=Math.max(10,20); 23Java程序设计1、方法声明 修饰符 方法返回类型 方法名 (类型 参数1, 类型 参数 2, ) throws 异常列表 方法体; 24Java程序设计元素必选作用 public|private |protected|default访问控制范围修饰符加上缺省没有任何访问控制范围修饰符的四种情 况,规定了成员方法的可见范围,static声明该方法为类方法,f

13、inal声明该方法为不可被子类所重写(overridden)的最终方法abstract声明该方法为抽象类中的抽象方法,必须在非抽象的子类中实现具体 操作native该方法被其它语言所实现synchronized保证该方法被互斥访问,参见多线程部分return type 该方法的返回值类型,可以是基本数值型,也可以任一引用类型,当 没有返回值时,类型声明为void name方法的名称 (参数列表)用于接收方法调用时,外界传来的参数,可以没有参数,但( )不能 省略,参数之间用逗号隔开,每个参数都必须独立有自己的类型声明 throws 异常列表用逗号隔开的异常列表,参见异常部分25Java程序设计

14、 2、向类中添加方法 u方法要完成什么样的功能。完成何种功能需要对应的数据 结构和算法可以实现它,例如上面的取款方法withdraw() ,它的功能是将账户的余额减少指定的金额,因此修改代 表账户对象余额的成员变量balance。 u方法运行是否需要参数。一些方法运行需要调用者传递参 数,这个参数被称为“实参”。在方法声明时,为了接收 这些实参,就需要事先声明一些参数对应他们。 u方法是否有返回值。Java程序设计26 3.方法调用 u调用对象方法的过程很简单,可以直接通过对象名用成员 运算符来访问。 u没有返回值的方法调用: uSystem.out.println(“Welcome!“);

15、u有返回值的方法调用: uint max=0; umax=Math.max(10,20); /调用比较最大值的方法,返回其中的最 大值 u方法调用尤其需要注意方法的: u返回值、方法名,需要调用者提供的参数Java程序设计276.3.4 定义方法(cont.) 4. 形参和实参 u某些方法在执行时,需要接收一些外部的值,对象在执行 这些方法时,就需要把这些值传递到方法代码中,这就需 要一个传递的通道。这个通道就是利用声明方法时定义的 形式参数列表,如图6-2中的定义。 u位于方法名后括号里的形式参数指定了执行方法需要的值 的个数和类型,那么在实际执行时,就需要按照声明的要 求(类型、顺序、个数

16、)提供确定的值,这个实际执行时, 传递到方法的值称为实际参数,它可以用常量表示,也可 以用变量表示,变量既可以是基本类型,也可以是引用类 型。28Java程序设计6.3.4 定义方法(cont.) 值传递和引用传递 u形式参数定义了接收执行时传递过来的值,但是对于 基本类型和引用类型,有本质的区别。 u用基本类型的变量向被调用方法的形式参数传值后, 两个变量之间不会发生联系,各自拥有各自的值,其 后可以独立变化 u用对象变量向被调用方法的形式参数传值后,两个对 象变量指向同一对象,是一个对象的两个名字。 注: u某些资料上说,Java只有值传递,是因为把变量保存 的对象引用视为正常的值。29Java程序设计/程序6-5:一个能够对账户进行转账的程序 public class BankService

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号