




已阅读5页,还剩33页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Chap4 抽象、封装与类 类的定义和对象的使用以及面向对 象程序设计的基本技术与方法 主要内容 抽象与封装 Java的类 类的修饰符(非访问控制符) 域(静态属性,变量) 方法(动态属性) 访问控制符 类的设计 4.1抽象与封装 抽象 去除掉被研究对象中与主旨无关的次要部 分,仅仅抽取与研究有关的实质性内容加以考 虑。在软件开发过程中使用的抽象有两类:过 程抽象和数据抽象 过程抽象:将系统划分为若干部分,强调过程 和步骤 数据抽象:系统中的数据和数据上的操作结合 在一起,把他们抽象为抽象数据类型类 封装 利用抽象数据类型将数据和基于数据的操 作封装在一起,数据被保护在抽象数据类 型内部,系统的其他部分通过包裹在数据 外面的操作与数据进行交互。 在面向对象程序设计中,这个抽象数据类 型被称作”类” 安全性和可复用性提高 Java的类 1. 系统定义的类 java类库中的类 2. 用户自定义的类 Java类库由开发人员或软件供应商编写 是java语言的重要组成部分,实现了程序 运行基本的功能,能否掌握和运用好类库 决定了编程能力的高低。 Java基本语法规则和类库的学习 常用的包 根据功能不同,java类库被划分为若干不同 的包。Java的类库在不断扩展,功能也越来 越完善。S可以找到类库联机手册 1. Java.lang包 核心类库 包含程序运行必不可 少的系统类。基本数据类型,基本数学函数 ,字符串处理,线程和异常处理等。默认加 载 2. Java.io包 基本输入输出类库 3. java.util包含一些低级的实用工具,如Date类, Vector类等。 4. java.util.zip实现文件压缩功能。 5. java.awt包 构建图形用户界面的类库,绘图和 组件以及事件响应等。 6. java.math整数算术运算及十进制算术运算 7. java.text处理文本或日期格式 8. java.applet实现运行于Internet浏览器的工具类 库,java.applet.Applet 9. java.awt.event包是java.awt包中Event类的扩充 10.实现网络功能的类库 11.java.sql实现数据库链接的类库,可以使 java程序访问不同类型的数据库。 12.java.rmi java.rmi.registry java.rmi.server实 现RMI功能(远程方法调用) 13.java.secuirty等提供了安全性控制和管理。 14.javax是java的扩展包,涉及图形,多媒体 和事务处理等方面的类库 使用系统类的方法 1. 继承系统类 class myapplet extends Applet 2. 创建系统类的对象 Label l1=new Label(“”) ; 3. 直接使用系统类 System.out.println() u 系统类应该是用户程序可见的,因此要引 入类库 。import java.awt.*; import的作用是编译时将系统类的字节码加入 到用户的java程序中。 用户自定义类 根据特定问题,用户自己编写的类。 class student String sname; int snum; teacher tt; public String getSname() return sname; public void setSname(String sname)this.sname = sname; public teacher getTt() return tt; public void setTt(teacher tt) this.tt = tt; public void evaluatt(float ff ) this.tt.tff =ff; 创建对象与定义构造函数 1. 创建对象 格式:类名 新建对象名=new 构造函数( ) 类名 新建对象名=new 类名() e.g Student sd1=new Student(); TextField input=new TextField(6); new 为新建对象开辟内存空间的算符。 构造函数初始化对象 变量和对象的区别 声明格式 int i=10 Integer i=new Interger(10) 1010 方法 parseInt 方法n 变量占内存小 对象占内存大 只有一个数值 除了数值还有方法 引用 i 对象名.属性名 要访问或调用一个对象的域或者方法,首先 访问对象,然后用算符“.”链接这个对象的某 个域或方法。例如:i.parseInt(s) i.value 3号楼303 2. 构造函数 作用是对对象进行初始化的工作 对象中含有多个域(变量),需要若干赋值语 句,将这些赋值语句组合成一个特殊的方法 ,这个特殊方法就是构造函数 特殊性: 方法名与类名相同 没有返回类型 也没有返回值 主要是初始化工作,也可以做其他操作 一般不能由编程人员显示调用 在创建对象时,系统自动调用 如果在类中不定义构造函数,系统会默认 这个类的一个空构造函数,没有参数,也 没有任何具体语句。 可以构造一个或几个构造函数。 如:Student(String sname) Student(String sname,int snum) 看例子PhoneCard类 和Car类 类的修饰符 class 类名 访问控制修饰符:限定类或者其属性是否 可以被其他部分访问和调用。 非访问控制修饰符 abstract final 被abstract修饰的类称为抽象类 被final修饰的类称为最终类 抽象类 形式 如: abstract class bird 是没有具体对象的概念类.如:鸟,电话卡 要想使用抽象类必须为它创建子类。 抽象类是它的所有子类的公共属性的集合 ,所以使用抽象类的优点是可以充分利用 这些公共属性来提高开发和维护程序的效 率。 abstract class PhoneCard double balance; void performDial() . 如果所有电话卡类的 performDial()的返回值要 改为boolean,不用修改 所有的子类,只要在父 类中作修改即可。或者 增加一个方法 abstract class PhoneCard double balance; boolean performDial() void performDial() 最终类 一个类如果被final所修饰,说明它不能再有 子类了。 被定义为final的类通常是一些有固定作用, 用来完成某种标准功能的类。比如引用数 据类型,实现网络功能的类等等。 电话 卡类 无卡号类 有卡号类 磁卡IC卡 校园 201卡 200卡IP卡 public final IcCard 注意: abstract和final修饰符不能同时修饰一个类。 因为abstract类自身没有对象,必须派生子类 ;而final类不可能有子类。 abstract和final可以分别和其他修饰符组合。 如:public abstract 或public final 域 定义一个类时,需要定义一组称为域的变量 保存类或对象的数据。 无特殊说明(无static修饰)的域称为实例变量 ,在类定义的时候被声明,在创建对象时才 分配空间,并保存一个对象的数据,实例变 量的声明周期与对象存在的时间相同。 域的类型可以是简单数据类型也可以是数组 ,向量,类或接口。 在一个类中,域名应是唯一的(类中不能重名) 域的修饰符 域的修饰符有static, final, volatile static修饰饰的域称为为静态态域 final修饰饰的域称为为最终终域 volatile修饰饰的域称为为易失域 静态域 用static修饰的域 静态域仅属于类的域,不属于任何一个类的对 象 静态域不保存在某个对象的内存区域中,而只 保存在类的内存区域中的公共存储单元,任何 一个对象访问和修改的都是同一个内存单元的 内容 objA int b class myclass static int a int b objB int b 静态初始化器 是由关键字static引导的一对大括号括起来的语 句组,作用是为了完成初始化工作 形式:static 语句组; 与构造函数的区别 构造函数是初始化对象,静态初始化器是对 类自身进行初始化 构造函数是在用new运算符产生新对象时由 系统自动执行,而静态初始化器是在它所属 的类加载入内存时由系统调用执行 静态初始化器不是方法,没有方法名,返回 值和参数列表 最终域 用final修饰的域 用final修饰的常量在整个程序的执行过程中不 会改变 需要说明常量的数据类型 同时需要指出常量的具体取值 因为所有类对象的常量成员,其数值都是固定 一致的,为节省空间,常量通常声明static 如:static final String connectNumber=“200” 易失域 用volatile修饰的域 易失域可能同时被几个线程所控制和修改,使 用时要特别注意 方法 方法是类的动态属性,标志了类所具有的功能和操作 ,用来把类和对象的数据封装在一起 方法的修饰符分为 abstract, final, static,native,synchornized abstract修饰的方法 抽象方法 是一种只有方法头没有方法体的方法,没有任何具 体操作 abstract void mymethod(参数列表); 抽象方法必须存在于抽象类之中 一个非抽象类中出现抽象方法是非法的,即一个抽 象类的子类如果不是抽象类,则它必须为父类中的 所与抽象方法书写方法体 抽象类中不一定只能拥有抽象方法 静态方法是属于整个类的类方法 声明一个方法为static至少有三重含义 1.调用此方法时必须使用类名做前缀,而不是对象名 2.非static方法是属于某个对象的方法,在对象创建时对 象的方法在内存中拥有自己专用的代码,而static的方 法是属于整个类的,它在内存中的代码段将随着类的 定义而分配和装载,不被任何一个对象专有(类似于 静态域) 3.由于static方法属于整个类的,所以它不能操纵和处理 属于某个对象的成员变量,而只能处理属于整个类的 成员变量,即 ,static方法只能处理static域 static修饰的方法 静态方法 final 修饰的方法 最终方法 是功能和内部语句不能被更改的最终方法, 即,不能被当前类的子类重新定义的方法 所有已被private修饰符限定为私有的方法, 以及包含在final类中的方法,都被缺省地认 为是final的 native 修饰的方法 本地方法 一般用来声明其他语言书写方法体并具体实现 方法的特殊方法,c、c+、汇编等 所有的native方法都没有方法体,而用分号代替 充分利用已有模块及提高运行的效率 影响软件的跨平台特性 synchronized 修饰的方法 同步方法 用来修饰static方法(类的方法),被调用执行 时,将把系统类Class中对应当前类的对象加锁 用来修饰非static方法(对象的方法),方法在 被调用执行前,将把当前对象加锁 访问控制修饰符 访问控制符是一组限定类、域或方法是否 可以被程序里的其他部分访问和调用的修 饰符 其他部分程序是指本类以外的其他的类 类的访问控制符只有一个public和缺省 域和方法的访问控制符有:public、private 、protected和缺省访问控制符 类的访问控制修饰符 public 公共类 表明它可以被所有的其他类所访 问引用,程序的其他部分可以创建这个类的对象 、访问这个类内部可见的成员变量和调用它的可 见方法 同一包中的类可以不用任何说明相互访问和引用,而 对于不同包中的类是互不可见的,不能直接引用,要 用import语句加载包,import packgename.clsname; 一个类作为整体对程序的其他部分可见,并不代表类 的所有域和方法也同时对程序的其他部分也可见,前 者只是后者的必要条件,类的域或方法是否为所有其 他类所访问,还要看这些域或方法自己的访问控制符 。 第一个包 类: myclass student 第二个包 类 PhoneCard testcard public class myclass class student public class PhoneCard class testcard 每个java程序的只能有一个public类,他 一般情况也是主类 缺省访问控制符 假如一个类没有访问控 制符,说明它具有缺省的访问控制符。 规定这个类只能被同一个包中的类访问和引 用,而不可以被其他包中的类使用,这种访 问特性又称为包访问性 缺省public类 同一个包的类可以访问可以访问 不同包的类不可以访问可以访问 一个类作为整体对程序的其他 部分可见,并不能代表类内部 的所有域和方法也同时对程序 其他部分可见。前者只是后者 的必要条件,类的域和方法能 否为其他类所访问,还要看域 和方法自己的访问控制符 类成员(域和方法)的访问控制符 被设定为public的成员可以被所有类访问 保护访问控制符protected修饰的方法,可以 被三种类所引用:该类自身、同包中的其他 类、其他包中的该类的子类 缺省访问控制符的方法,也具有包访问性, 可以被同一个包中的其他类所访
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工业机器人2025年行业技术创新及应用案例研究报告
- 绵阳江油市卫生健康局医疗卫生辅助岗人员招募考试真题2024
- 福州市辅警考试题库2025
- 金华市辅警考试题库2025
- 2025汽车租赁合同范本样本
- 2025网约车租赁合同模板
- 2025标准买卖合同格式
- 2025年工程设备的租赁合同
- 2025企业员工午餐配送合同
- 2025年设备升级借款合同
- 2025-2026粤教粤科版(2024)科学三年级上册教学设计(附目录)
- 广东省深圳市福田区2024-2025学年八年级上学期语文期中考试试卷(含答案)
- 福建省泉州市2025届高三上学期质量监测(一)历史试卷(含答案)
- 《西门子S7-1200PLC编程及应用教程》全套教学课件
- 《鸿蒙应用开发项目教程》全套教学课件
- 肠道准备课件
- 精神运动康复
- 2025年陕西省中考数学试题卷(含答案详解)
- 2025年注册计量师考试计量器具管理与维护试卷
- 国内公司外汇管理办法
- 高中数学教师学情分析现状的调查研究
评论
0/150
提交评论