Java语言类和对象.ppt_第1页
Java语言类和对象.ppt_第2页
Java语言类和对象.ppt_第3页
Java语言类和对象.ppt_第4页
Java语言类和对象.ppt_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

类和对象 面向对象程序设计所关心的是对象及对象间的关系 整个程序由类和对象组成 对象间通过消息进行联系 从而构造出模块化 可重用 维护方便的软件 基本要求 理解类和对象之间的关系 熟练掌握类的设计方法 熟练掌握对象的使用方法 掌握构造函数的概念和使用 熟练运用实例成员和类成员编写程序 熟悉this引用 了解Java包的概念及其使用方法 理解封装的特性 一 类的定义 类是对具有相同属性和方法的一组相似对象的抽象 或者说类是对象的 类的一个重要作用是客观定义一种新的数据类型 它封装了一类对象的属性和方法 是这一类对象的原型 而对象是真正存在的物理实体 1 面向对象程序设计的基本思想 对要处理的问题进行自然分割 按照人的思维方式建立问题领域的模型 对客观实体进行结构模拟和功能模拟 设计出尽可能自然地表现问题求解方法的程序 2 类的定义格式 类是Java程序的基本单元 当开始编写Java程序时也就是要开始建立一个类 类的声明格式如下 修饰符 class extends父类名 implements接口名 关于修饰符 修饰符分为访问控制符和类型说明符2个部分 分别用来说明类的访问权限以及是否为抽象类或最终类 类的访问控制符 类的访问控制符主要包括public friendly 当一个类被说明成public时 此源程序文件名必须与public修饰的类名相同 当没有public时 即是默认类 friendly 或称为缺省类 表示该类只能被同一个包中的类所访问 类的类型修饰符 类的类型修饰符包括final abstrct 用final修饰的类被称为最终类 表明该类不能派生 用abstract修饰的类称为抽象类 抽象类不能定义对象 只能被继承 访问控制符和类型说明符可以一起使用 访问控制符在前 类型说明符在后 类主体设计 Java的类包括变量和方法 分别叫做类的成员变量和成员方法 因此 类的主体的设计主要是成员变量的设计和成员方法的设计两部分 成员变量的说明 声明一个成员变量的格式为 修饰符 成员变量修饰符 没有任何修饰符则为默认访问权限 表明该成员变量可以被同一包中的所有类所访问 成员方法的声明 成员方法声明的格式为 参数列表 throws 成员和成员函数声明示例publicclassCircle privatedoubleradius privatedoublearea finaldoublePI 3 14 publicvoidSetRadius doubler radius r publicdoubleCalculateArea returnPI radius radius publicstaticvoidmain String args Circlec newCircle c SetRadius 10 System out println TheareaoftheCirclewithradius 10is c CalculateArea 类的实例化 如果已经定义了一个类 那么就可以使用这个类创建它的一种对象 即实例化一个类 创建对象 创建对象包括对象声明和对象初始化两部分 通常这两部分是结合在一起的 即定义对象的同时对其初始化 为其分配空间 并进行赋值 其格式为 new 参数列表 例如 CircleMyCircle MyCircle newCircle 或CircleMyCircle newCircle 引用类型 对象是引用类型 引用类型是指该类型的标识符表示的一片连续内存地址的首地址 对象定义后系统将给对象标识符为分一个内存单元 用以存储实际对象在内存中的存储位置 在没有用new关创建实际对象前 对象名的值为null 关键字new的作用 为对象分配内存空间 引用对象的构造方法为对象初始化 为对象返回一个引用 对象成员的使用 对象的使用包括使用其成员变量和使用其成员方法 通过成员运算符 可以实现对变量的访问和方法的调用 其格式为 对于成员变量 对象名 成员变量名对于成员方法 对象名 成员方法 参数列表 对象的赋值 同类对象之间可以进行赋值 称为对象赋值 但和变量赋值不一样 对象赋值并不是真正把一个对象赋给另一个对象 而是让一个对象名存储的对象名存储的对象首地址和另一个对象名存储的对象首地址相同 classNumber 对象赋值示例 inti publicstaticvoidmain String args Numbern1 newNumber Numbern2 newNumber n1 i 9 n2 i 47 System out println 1 n1 i n1 i n2 i n2 i n1 n2 System out println 1 n1 i n1 i n2 i n2 i n1 i 27 System out println 1 n1 i n1 i n2 i n2 i 类及其成员修饰符的作用 测试成员的作用域示例classFieldTest privateintnum 5 publicintget returnnum classTest publicstaticvoidmain String args FieldTestft newFieldTest intt ft get ints ft num 引用非法System out println t t static修饰符 根据Java类中成员是否使用了Static修饰符 可以将其分为类成员和实例成员 类成员 类成员仅在类的存储单元中存在 而由这个类所创建的所有对象中 只是存储了一个指向该成员的引用 对于类成员 即可以使用对象进行访问 也可以使用类名直接进行访问 并且在类方法 static方法 中只能访问类成员 static 不能访问实例成员 非static 实例成员 实例成员由每一个对象个体独有 对象的存储空间中有一空间用来存储该成员 不同的对象之间同名的实例成员相互独立 任何一个对象改变了自己的实例成员 只会影响这个对象本身 而不会影响其他对象中的实例成员 对于实例成员只能通过对象来访问 不能通过类名进行访问 在实例方法中 即可以访问实例成员也可以访问类成员 测试对实例成员和类员的不同访问形式 publicclassStaticTest staticinti 1 intj 1 staticvoidprintStatic System out println i i System out println j j voidprint System out println i i System out println j j publicstaticvoidmain String args StaticTest printStatic StaticTest print StaticTest i 2 StaticTest j 3 StaticTestst newStaticTest st i 4 st j 4 st print st printStatic 构造函数 若要对每个对象中的实例变量逐个进行初始化 最简单的方法就是在创建对象时完成这些初始化 Java通过构造函数来完成这一工作 构造函数的作用 构造函数也称为构造方法 用来对对象进行初始化 它本身是一种特殊的方法 通常一个类至少有一个构造函数 构造函数的定义 构造函数在语法上等同于其他方法 因此构造函数的设计方法和其他的方法的设计方法类似 构造方法的特点 构造函数的名字必须和类名完全相同 并且没有返回值 甚至连表示返回值的 void 也没有 因为构造函数隐式的返回类型就是本类的类型 如果没有定义类的构造函数 Java编译会提供一个缺省的构造方法 构造函数示例publicclassDate privateintday privateintmonth privateintyear Date intd intm inty day d month m year y publicvoidprintDate System out println 今天是 year 年 month 月 day 日 publicstaticvoidmain String args Datetoday newDate 12 3 2005 today printDate Dateanotherday newDate 21 3 2005 anotherday printDate 默认构造函数 一般而言 每个类都至少有一个构造函数 如果程序员没有为类定义构造函数 Java编译器会自动为该类生成一个默认的构造函数 如果程序员定义了一个或多个构造函数 Java编译器则不会为程序添加默认的构造函数 对象作为方法的参数 当使用对象实例作为参数传递给方法时 参数的值是对对象的引用 即 传递到方法内部的是对象的引用值而不是对象的内容 因为 按值 传送 在方法内这个引用值不会被改变 但是如果通过该引用值修改了对象的内容 则方法结束后 所修改的对象内容会保留下来 classMyData 对象作为方法的参数示例 inti publicMyData intnum i num publicMyData publicclassSwap publicstaticvoidmain String args MyDatamd1 newMyData 10 MyDatamd2 newMyData 50 System out println beforeswap System out println md1is md1 i System out println md2is md2 i swap md1 md2 System out println Afterswap System out println md1is md1 i System out println md2is md2 i publicstaticvoidswap MyDataa MyDatab MyDatatemp newMyData temp i a i a i b i b i temp i this引用 在方法内 this关键字可以为调用了方法的那个对象生成相应的地址 从而获得对调用本方法的那个对象的引用 classPoint this关键字使用示例 intx y voidSetPoint intx inty this x x this y y publicclassTestThis publicstaticvoidmain String args Pointp1 newPoint p1 x 5 p1 y 10 p1 SetPoint 10 20 System out println p1 x System out println p1 y 类的封装性 数据隐藏技术是面向对象的重要特性 封装 它将类的外部界面与类功能的实现区分开来 隐藏实现细节 保留有限的对外接口 迫使用户使用外部界面 通过访问接口实现对数据操作 即使实现细节发生了改变 还可通过界面承担功能而保留原样 确保调用它的代码还继续工作 类的组织 面向对象程序设计的另一个特点是公共资源可以重用 在Java中 当应用软件比较大时 就会有许多Java文件 如果这些Java文件放在一个文件夹中 管理起来就比较困难 以后的软件资源重用也不方便 Java解决此问题的方法是包 包 包是Java提供的文件组织方式 一个包对应一个文件夹 一个包中可以包括很多类文件 包中还可以有子包 形成包的层级 Java把类文件放在不同的包中 类文件的名称 由于使用包名 类文件就会有两个名字 一个是类文件的短名 另外一个是类文件的全限定名 短名就是类文件本身的名 全限定名则是在类文件的名字前面加上包名 创建包 在Java源文件的第一句使用package语句可以将该文件中所定义的所有类都定义为当前包 其格式为 package 包名 多级包的创建 使用package也可以创建一个有层级的包 格式为 package 子包名 一个Java源文件中只有一个package语句 而且必须在第一句 在进行编译的时候要使用下面格式才能Java才能自动创建包目录 Java d HelloWorld java 包的访问 一旦一个类有了包 在访问时就需要指明类的路径 以便能够找到该类 可以用设定ClassPath的方法来设定缺省的包路径 如 SetCLASSPATH C myjava 使用import语句 Java使用import语句来导入特定的类甚至是整个包 一旦被导入 类可以直接使用其短名 其格式为 importPKG1 PKG2 classname 访问保护 被public说明的成员 可是被任何地方访问 被private说明的成员 只能在类内访问被protected说明的成员 本包和子类可以访问缺省 同一包内可以访问 本部

温馨提示

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

评论

0/150

提交评论