ava类的实现.ppt_第1页
ava类的实现.ppt_第2页
ava类的实现.ppt_第3页
ava类的实现.ppt_第4页
ava类的实现.ppt_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

第9讲类的实现 面向对象技术的编程特点类的描述成员变量和成员方法对象的使用构造方法 使用UML设计类static成员参数传递聚集类 UML设计 UML是统一建模语言 UML是UnifiedModelingLanguage的缩写 是一种标准的图形化建模语言 它是面向对象分析与设计的一种标准表示 具有以下特点 1UML是国际统一的标准 用它表示的产品符合国际标准 产品能够得到广泛的认可 2作为国际标准 国际软件业和商业对UML的支持也相当普遍因而采用它将可以得到最广泛的技术支持和工具支持 3UML采用图的形式来表述系统的视图 图形化易于理解的优势使得不同知识背景的客户用户 领域专家 系统分析以及开发人员可以方便的交流 4UMl是一种标准的表示方法 具有通用性 5UML具有良好的可扩展性 可适用到不同的领域 在具有通用性的同时还具有使自身专用化的能力 IBM的RationalRose和MS的Visio都是UML工具 UML如何表示类 设计银行帐户 问题 让一个变量被类的多个实例对象所共享 以实现多个对象之间的通信 或用于记录已被创建的对象的个数 这样的变量有时也被称为类变量 或静态变量 引入类成员定义 static Java语言中没有全局变量的概念 类变量从某种意义上来说相当于其他程序设计语言中的全局变量 静态变量 static 编写一个类时 在描述其对象的属性和行为没有产生实质上的对象通过new关键字才会产生出对象 系统才会分配内存空间给对象 其方法才可以供外部调用 我们有时候希望无论是否产生了对象或无论产生了多少对象的情况下 某些特定的数据在内存空间里只有一份 例如所有的中国人都有个国家名称 每一个中国人都共享这个国家名称 不必在每一个中国人的实例对象中都单独分配一个用于代表国家名称的变量设计使用静态变量统计一个类产生的实例对象的个数的程序 classChinese Stringcountry 中国 类成员 Stringname intage voidsingOurCountry System out println 啊 亲爱的 country 类中的成员方法也可以直接访问静态成员变量 static Main System out println Chinesecountryis Chinese country Chinesech1 newChinese System out println Chinescountryis ch1 country Chinesech2 newChinese System out println Chinescountryis ch2 country 类成员 类成员 它包括类变量和类方法 它是不依赖于特定对象的内容不同对象的成员其内存地址是不同的系统只在实例化类的第一个对象的时候 为类成员分配内存 以后再生成该类的实例对象时 将不再为类成员分配内存 不同对象的类变量将共享同一内存空间 类成员 类方法 类方法 static类型变量名 static类型方法名 特点 唯一存在 类变量 类方法 引用 类名 静态变量名类名 静态方法名例 classjava1 staticintx main java1 x 类成员 类变量 类变量是唯一为类中所有对象共享的变量如果一个类变量同时还被定义为public类型 那么其他类也同样可以使用这一变量 引用这一变量时甚至无须生成一个该类的对象 而是直接利用类名即可指向它 类变量 或静态变量 的作用 classCount intserialNumber staticintcounter 0 类变量publicCount counter serialNumber counter publicclassObjectTest UseStatic publicstaticvoidmain Stringargs System out println Count counteris Count counter CountTom newCount CountJohn newCount System out println Tom sserialNumberis Tom serialNumber System out println John sserialNumberis John serialNumber System out println NowCount counteris Count counter 在这个例子中 每一个被创建的对象得到一个唯一的serialnumber 这个号码由初始值1开始递增 由于变量counter被定义为类变量 为所有对象所共享 因而当一个对象的构造方法将其递增1后 下一个将要被创建的对象所看到的counter值就是递增之后的值 static静态方法 StaticTest 在静态方法里只能直接调用同类中其它的静态成员 包括变量和方法 而不能直接访问类中的非静态成员 对于非静态的方法和变量 需要先创建类的实例对象后才可使用 而静态方法在使用前不用创建任何对象 静态方法不能以任何方式引用this和super关键字静态方法在使用前不用创建任何实例对象 当静态方法被调用时 this所引用的对象根本就没有产生 main 方法是静态的 因此JVM在执行main方法时不创建main方法所在的类的实例对象 因而在main 方法中 我们不能直接访问该类中的非静态成员 必须创建该类的一个实例对象后 才能通过这个对象去访问类中的非静态成员 这种情况 我们在以后的例子中会多次碰到 类方法 由于静态方法可以在没有定义它所从属的类的对象的情况下加以调用 故不存在this值静态方法不能被重写 也就是说 在这个类的子孙类中 不能有相同名称 相同参数的方法 理解main方法的语法 由于java虚拟机需要调用类的main 方法 所以该方法的访问权限必须是public 又因为java虚拟机在执行main 方法时不必创建对象 所以该方法必须是static的 该方法接收一个String类型的数组参数 该数组中保存执行java命令时传递给所运行的类的参数 按值传送与对象传递 按值 传送自变量 即方法调用不会改变自变量的值当对象实例作为自变量传送给方法时 自变量的值是对对象的引用 也就是说 传送给方法的是引用值 地址 在方法内 这个引用值是不会被改变的 但可以修改该引用指向的对象内容 因此 当从方法中退出时 所修改的对象内容可以保留下来 publicclassParam1 intx 3 voidchangeX intx x 5 voidshowX System out println x x publicstaticvoidmain Stringargs Param1t1 newParam1 t1 showX t1 changeX t1 x t1 showX publicclassPasstest doublePV publicvoidChangeInt intvalue value 55 publicvoidChangeObj Passtestref ref PV 32 4 publicstaticvoidmain Stringats intv 11 Passtestpt newPasstest pt ChangeInt v System out println v v pt PV 10 2 pt ChangeOb

温馨提示

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

评论

0/150

提交评论