版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第3章类和对象,类和对象,2,主要内容,3.1 概述 3.2 类和对象的定义及使用 类的定义 类、成员变量、成员方法 创建对象 对象的使用 对象的清除 3.3 实例变量、实例方法和类变量、类方法 3.4 this 关键字 3.5 包 3.6 内部类和匿名类 3.7 访问控制和类的封装性,类和对象,3,3.1 概述,3.1.1 对象(object) 3.1.2 类(class) 3.1.3 消息(message) 3.1.4 面向对象系统的特性 1. 抽象性(abstract) 2封装性(encapsulation) 3继承性(inheritance) 4多态性(polymorphism),类和
2、对象,4,3.2 类和对象的定义及使用,进行Java程序设计,实际上就是定义类的过程。一个Java源程序文件往往是由许多个类组成的。从用户的角度看,Java源程序中的类分为两种: 1. 系统定义的类,即Java类库。 基类:所有JAVA的类都派生自Object Java的类可组织在包(package)中 Java提供的标准类库分布在一系列的包中,如java.lang,java.awt,等,jdk1.1后加入javax.swing等 2. 用户自己定义的类。 编程的过程就是继承基类或标准类而创建、定义特殊子类的过程,类和对象,5,3.2.1 类的定义,Java中类包括成员变量和成员方法两部分。类
3、的成员变量可以是基本数据类型的数据或数组,也可以是一个类的实例;类的方法用于处理该类的数据。 1. 类的定义格式:,类和对象,6,类的修饰字: public |default(可缺省,非公开类) abstract | final public:允许其他类(没有限制)访问本类,一个源文件仅可以有一个public类,且与文件同名。 default(缺省):可被当前包中的其他类访问;如果定义时没有public,则所有的类都是friendly; abstract:没有实例的抽象概念类 final:不能再被扩展,不包含子类的类;易于安全性的实现,或用于创建固定功能的类 每个类都拥有自己的名字空间,即指类
4、及其方法和变量可以在一定的范围内知道彼此的存在,可以使用。 父类继承声明:extends 父类名(见继承) 实现接口(interface):implements 接口名,关于类定义的说明,类和对象,7,2.类定义中成员变量的声明,修饰符 访问控制符(访问权限) public:可被所有其他类引用 protected:该类自身、子类、同一包中的其他类 private:仅可被该类自身引用和修改,不能被其他任何类(包括子类)引用 default(缺省):本包中的类,变量修饰字 变量数据类型 变量名1,变量名2=变量初值;,public | protected | private static fina
5、l transient volatile,类和对象,8,static: 类变量或类字段,对所有的实例一致,引用时前缀可使用类名或对象名,属于类。 final:数值不变常量,定义同时应对其进行初始化 volatile:异步控制修饰符,表示多个并发线程共享的变量,这使得各线程对该变量的访问保持一致。 transient:与对象序列化有关,类和对象,9,3. 类定义中方法的声明,访问控制符(权限): public、private、protected、default(缺省),方法修饰字 返回类型 方法名称(参数1,参数2,) throws exceptionList (statements;) /方法
6、体:方法的内容 ,public | protected | private static final | abstract native synchronized,类和对象,10,修饰符(Modifier):,static:静态方法,又称类方法 使用类名或对象名作为前缀,建议使用类名 在方法体中只能使用static变量和static方法或访问自己的局部变量 abstract:只有接口没有语句,要在子类中通过重新定义(override)来实现 final:不能被重新定义(override),类和对象,11,例:定义圆类,/ Circle.java public class Circle priv
7、ate double radius = 1; / 圆的半径 private static int numberOfObjects = 0; / 创建的圆的个数 / 以半径1创建一个圆,圆的个数加1 public Circle() numberOfObjects+; / 以半径newRadius创建一个圆,圆的个数加1 public Circle(double newRadius) radius = newRadius; numberOfObjects+; ,类和对象,12,/ 获取圆的半径 public double getRadius() return radius; / 设置圆的半径 pu
8、blic void setRadius(double newRadius) radius = (newRadius = 0) ? newRadius : 0; / 获取圆的个数 public static int getNumberOfObjects() return numberOfObjects; / 返回圆的面积 public double findArea() return radius * radius * 3.14159; ,类和对象,13,构造方法的特性: 构造方法名与类名相同 不能有返回值,void也不可以 用new创建对象时,自动调用 缺省构造方法,类和对象,14,3.2.2
9、 创建对象,创建一个类,就创建了一种新的数据类型;声明一个类的变量,就是声明了该类的一个实例,即对象。创建对象包括声明对象、实例化对象即为对象分配存储空间两步 。 1. 声明对象 类名 对象名表; 例: Circle circleOne, circleTwo;,类和对象,15,2. 建立对象 使用new运算符和类的构造方法为声明的对象分配内存空间,如果类中没有构造方法,系统会调用默认的无参构造方法。 格式:对象名=new 构造方法(形参列表); 例如: circleOne = new Circle(); / 此时circleOne引用被分配内存空间的其实地址 circleTwo = new C
10、ircle(2.0);,类和对象,16,3.2.3 对象的使用,在程序中创建对象的目的是使用对象。创建一个对象就要为对象的各个成员变量分配存储空间。可以通过引用对象的成员来使用对象: 对象数据成员的引用方式如下: 对象名.数据成员名 对象的成员方法的引用方式如下: 对象名.成员方法名(实际参数表) 示例:参看例3.1,类和对象,17,3.2.4 对象的清除,Java运行时系统通过垃圾自动回收机制周期性地释放无用对象所使用的内存,完成垃圾的自动回收。当一个对象的引用为空时,该对象称为一个无用对象。垃圾收集器以较低优先级在系统空闲周期中执行,一次垃圾的收集速度比较慢,在某些情况下,我们也可以通过调
11、用System类的gc()方法,即调用System.gc()显示执行垃圾收集。,类和对象,18,3.2.5 对象作为方法的参数,传递对象的引用 方法体内对形参的操作会影响原对象 例3.2,类和对象,19,3.3 实例变量、实例方法和类变量、类方法,在类的数据成员和方法成员前用static关键字修饰的分别称为类变量和类方法,也称为静态变量和静态方法,非静态的又分别称为实例变量和实例方法。 在生成每个类的实例对象时,Java运行时系统为每个对象分配一块内存,然后可以通过对象引用变量来访问这些对象的实例变量。不同对象的实例变量是不同的。 例3.3,类和对象,20,变量的作用域 实例变量和类变量:整个
12、类 局部变量: 从声明位置到块尾 实例变量和类变量只能声明一次 局部变量在互不嵌套的块内可多次声明 实例变量和局部变量可以重名,类和对象,21,变量的初始值 实例变量和类变量有默认值 局部变量必须先赋值,类和对象,22,3.4 this关键字,关键字this用来指向当前对象或类的实例变量。如果局部变量与实例变量重名,则局部变量优先,同名的实例变量或类变量被隐藏。 例: class TestThis int day = 1; void setDay(int day) this.day = day; ,类和对象,23,3.5 包,包(package)是Java提供的文件(即公共类)的组织方式。一个
13、包对应一个文件夹,一个包中可以包括许多类文件。包中还可以再有子包,称为包等级。 包的作用有四个: (1) 定位类:具有相似功能的类可以放置在同一个包中,这样可以很容易地查找定位类。 (2) 避免命名冲突:在开发由其他程序员共享的可复用类时,会发生命名冲突,可以把类放在不同包中,通过包名引用类可以避免命名冲突。 (3) 可以方便地分发软件。 (4) 控制类之间的访问(参见第4章访问控制)。 注意:包是一个类名空间,同一个包中的类和接口(参见第4章)不能重名,不同包中的类可以重名。,类和对象,24,3.5.1 创建包,包的创建就是将源程序文件中的接口和类纳入指定的包。一般情况下,Java源程序由四
14、部分组成: (1) 一个包(package)定义语句(可选项)。其作用是将本源文件中的接口和类纳入指定包。源文件中若有包说明语句,必须是第一个语句; (2) 若干个(import)语句(可选项)。其作用是引入本源文件中所需要使用的包; (3) 一个public的类声明。在一个源文件中只能有一个public类; (4) 若干个属于本包的类声明(可选)。 包的定义语句格式: package 包名;,类和对象,25,例:,package pack1.pack2; 创建包就是在当前文件夹下创建一个子文件夹,存放这个包中包含的所有类和接口的.class文件。package pack1.pack2;语句中
15、的符号“”代表了目录分隔符,说明这个语句创建了两个文件夹。第一个是当前文件夹下的子文件夹pack1;第二个是pack1下的子文件夹pack2 ,当前包中的所有类就存放在这个文件夹里。,类和对象,26,3.5.2 设置类路径,包是一种组织代码的有效手段,包名指出了程序中需要使用的.class文件的所在之处。另一个能指明.class文件所在的位置是环境变量CLASSPATH。 在WindowsXP或Windows2000中可以通过设置“我的电脑”属性来设置系统的环境变量。 对于Java Application程序,还可以通过为Java解释器设置参数来指定类文件路径。例如,对于JDK中的Java解释
16、器java.exe,有开关参数-classpath;假设当需要解释执行的test.class文件不在当前目录而在e盘的TEMP目录下时,可以使用如下的命令行语句: java -classpath e:temp Test 来运行这个程序。,类和对象,27,3.5.3 包的使用,Java提供了丰富的标准类来帮助程序设计者更方便快捷地编写程序,这些标准类组成了类包,主要有: java.lang java.awt java.applet java.awt.image java.awt.peer java.io java.util 使用Swing组件进行GUI设计,使用javax.swing包中的类 除
17、了java.lang之外,其余类包都不是java语言所必须的。若要使用,必须进行包的导入。,类和对象,28,将类组织成包的目的是为了更好地利用包中的类。通常一个类只能引用与它在同一个包中的类。如果需要使用其它包中的public类,则可以使用如下的几种方法。 (1) 在引入的类前加包名 例如:pack1.pack2.Format.format(23.4533,2); (2) 用import关键字加载需要使用的类 例如上面的语句在程序开始处增加了: import pack1.pack2.Format;语句之后,就可以直接写成: Format.format(23.4533,2); (3) 用import关键字加载整个包 import pack1.pack2.*;,类和对象,29,3.6 内部类和匿名类,3.6.1 内部类 一个类被嵌套定义于另一个类中,称为内部类(Inner Classes)或内隐类,包含内部类的类称为外部类。 示例:参看例3.5,类和对象,30,3.6.2 匿名类 有时在定义事件处理代码时,由于代码短小,不必再明确定义一个类,可使用匿名内部类。匿名内部类是final(最终)类,非static类,匿名内部类将类的声明和创建类的实例一步完成。 主要应用在事件处理的代码编写中。,类和对象,31,3.7访问控制和类的封装性,3.7.1 访
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/Z 6113.405-2026无线电骚扰和抗扰度测量设备和测量方法规范第4-5部分:不确定度、统计学和限值建模替换试验方法的使用条件
- 流程工业智能制造技术理论及应用 课件 第五章-流程工业过程实时优化
- 感恩活动策划方案流程(3篇)
- 江门地产活动策划方案(3篇)
- 活动策划方案赚钱文案(3篇)
- 跨年欢聚活动策划方案(3篇)
- 配送企业人员管理制度范本(3篇)
- 高速道路救援管理制度范本(3篇)
- 2026年及未来5年市场数据中国投资保险行业市场深度分析及发展趋势预测报告
- 养老院活动策划制度
- 2025届新疆乌鲁木齐市高三下学期三模英语试题(解析版)
- DB3210T1036-2019 补充耕地快速培肥技术规程
- 混动能量管理与电池热管理的协同优化-洞察阐释
- T-CPI 11029-2024 核桃壳滤料标准规范
- 统编版语文三年级下册整本书阅读《中国古代寓言》推进课公开课一等奖创新教学设计
- 《顾客感知价值对绿色酒店消费意愿的影响实证研究-以三亚S酒店为例(附问卷)15000字(论文)》
- 劳动仲裁申请书电子版模板
- 赵然尊:胸痛中心时钟统一、时间节点定义与时间管理
- 家用燃气灶结构、工作原理、配件介绍、常见故障处理
- ZD(J)9-型电动转辙机
- DB21T 3414-2021 辽宁省防汛物资储备定额编制规程
评论
0/150
提交评论