免费预览已结束,剩余26页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章类与对象 4 1类和对象 类是对具有相同属性和方法的一组对象的抽象对象是类的示例 2 类的定义格式 StudentTest javaimportjava lang classStudent Stringname StringstuNumber 系统默认值为nulldoublemath english chinese publicStudent 构造方法publicStudent Stringmname StringmstuNumber name mname stuNumber mstuNumber publicvoidsetScore doublemd1 doubleed1 doublecd1 math md1 english ed1 chinese cd1 publicdoubleavarage doubleavg avg math english chinese 3 returnavg publicvoiddisplay System out println name t stuNumber t math t english t chinese t avarage publicclassStudentTest publicstaticvoidmain Stringargs Students1 s2 s1 newStudent s2 newStudent zhang 102 s1 display s2 display nullnull0 00 00 0zhang1020 00 00 0 StringstuNumber 200 显式初始化 null2000 00 00 0 Java源程序中使用的类分为 自定义的类 见前系统定义的类 java类库如Applet来自java applet 该包所有的类用户必须用import导入使用方法直接使用系统类如System out println 继承系统类classMyAppletextendsApplet 创建类的对象importjava io classTest publicstaticvoidmain Stringargs InputStreaReaderkeyin newInputSteamRead System in 3 创建对象 1 声明对象 系统只为该变量建立了一个引用 并未给对象分配内存空间类名对象名 Students1 s2 s3 2 建立对象 对象名 new类名 实参表 s2 newStudent zhang 102 初始化对象 3 初始化对象法1 未显式初始化时 java提供默认值见表4 1法2 显式初始化 在类体内定义数据成员时 与C 不同classStudent Stringname 缺省为nullStringstuNum 101 显式赋值Doublemath english chinese 缺省为0 法3 用构造方法初始化 4 使用对象 当一个对象被创建后 就拥有了自己的数据成员和成员方法 用 来使用对象的数据 方法对象名 数据成员对象名 成员方法名Students1 s2 s1 newStudent s2 newStudent zhang 102 s1 name wang s1 math 90 s1 setScore 90 80 70 s1 average s1 display 例c4 2 java显示小狗的信息 定义dogs类Name Weight和Height三个数据成员和一个名为ShowDog的成员方法 为dogs类创建Dane和Setter两个对象 确定两个对象的属性后引用ShowDog方法显示这两个对象 importjava awt importjava applet classDogs 定义dogs类 publicStringName publicintWeight publicintHeight publicvoidShowDog Graphicsg intx inty g drawString Name Name x y g drawString Weight Weight x y 20 g drawString Height Height x y 40 dogs类定义毕 publicclassc4 2extendsApplet publicvoidpaint Graphicsg 创建对象DogsDane 声明Dane的对象Dane newDogs 建Dane对象 分配存储空间dogsSetter newdogs 声明同时建Setter对象 引用对象的数据成员 赋值Dane Name GreadDane Dane Weight 100 Dane Height 23 Setter Name IrishSetter Setter Weight 20 Setter Height 30 引用对象的成员方法Dane ShowDog g 25 25 Setter ShowDog g 25 120 4 2成员方法 描述对象所具有的功能和操作 函数和方法一个类可以有多个方法 例 方法 importjava lang importjava io classMyAdd intadd intx inty intz z x y returnz publicbooleancmp doublex doubley return x y true false publicclassMethodTest publicstaticvoidmain Stringargs inta 3 b 4 MyAddma newMyAdd intr1 ma add a b System out println r1 booleanr2 ma cmp a b 运行结果 7 例 类库成员方法abs importjava lang Math classMethodTest publicstaticvoidmain Stringargs inta 3 intb Math abs a System out println b 结果为3 3 方法体中的局部变量 局部变量的可见性和作用域限于本方法局部变量声明前不应加修饰符局部变量使用前必须赋值 c4 10 java局部变量及其用法 publicclassc4 10 publicstaticvoidmain String args inta 2 b 3 intf add a b 调用add方法System out println f f System out println z z 错 z在add方法内 离开则被清除 staticintadd intx inty publicintzz 错 局部变量zz前不应加修饰符intz d 本方法中定义的变量z dz x y z x d 错 因为d还没有赋值就使用returnz 4 形式参数和实际参数c4 12 13 java publicclassc4 12 13 staticvoidadd doublex doubley doublez z x y System out println z z staticdoubleadd1 doubley1 doubley2 doublez z y1 y2 2 9 returnz publicstaticvoidmain String args inta 2 b 7 doublef1 2 f2 4 f3 add a b 按Java的类型转换规则达到形参类型 f3 add1 f1 f2 3 5 错 实参与形参参数个数不一致System out println a a tb b 输出结果a 2 b 7值传递f3 2 add1 f1 f2 add a add1 f1 f2 z 9 0a 2b 7z 10 9 引用成员方法的注意事项 被引用的方法与调用者是在同一类内 可直接调用被引用的方法同调用者不同属于一个类 但属于一个文件 由类的修饰符和方法的修饰符共同决定被调用的是java类库的方法 import importjava awt importjava applet classStudent doublemath doubleenglish doublechinese privatedoubleavg return math english chinese 3 publicvoiddisp Graphicsg intx inty g drawString 显示平均成绩 avg x y publicclassc4 3extendsApplet publicvoidpaint Graphicsg Students1 newStudent s1 math 80 s1 english 90 s1 chinese 80 5 s1 avg s1 disp g 20 40 引用成员方法的注意事项 私有方法 虽是私有方法 但本类内可以直接调用 私有方法 类外不可以调用 公有方法 类外可以调用 4 3构造方法 一种特殊的方法 回顾 初始化对象时 即初始化对象的数据成员 在类体内声明数据成员时直接使用缺省值 见初始化对象 使用构造方法classStudent Stringname 系统默认值为nullStringstuNumber doublemath english chinese 系统默认值为0publicStudent publicStudent Stringmname StringmstuNumber name mname 构造方法内初始化stuNumber mstuNumber 特点 构造方法同类名同名无返回值classDogs publicintDogs 错 不是由程序员显式调用的 而是在创建对象的时候由系统自动调用的默认构造 若用户未定义构造方法 见c4 2 系统为该类定义了一个空构造注意 若已经定义了一个构造 则该默认构造被覆盖 如果想还适应无参的构造 自己应再写一个 构造方法可以重载构造方法还可继承 例c4 2 java显示小狗的信息 定义dogs类Name Weight和Height三个数据成员和一个名为ShowDog的成员方法 为dogs类创建Dane和Setter两个对象 确定两个对象的属性后引用ShowDog方法显示这两个对象 importjava awt importjava applet classDogs publicStringName publicintWeight publicintHeight publicvoidShowDog Graphicsg intx inty g drawString Name Name x y g drawString Weight Weight x y 20 g drawString Height Height x y 40 publicclassc4 2extendsApplet publicvoidpaint Graphicsg 创建对象DogsDane 声明Dane的对象Dane newDogs 建Dane对象 分配存储空间dogsSetter newdogs 声明同时建Setter对象 引用对象的数据成员 赋值Dane Name GreadDane Dane Weight 100 Dane Height 23 Setter Name IrishSetter Setter Weight 20 Setter Height 30 引用对象的成员方法Dane ShowDog g 25 25 Setter ShowDog g 25 120 程序中出现了构造函数么 没有 但是编译也没有问题 因为系统提供了默认构造函数 返回 classdogs 定义dogs类 publicStringName publicintWeight publicintHeight publicdogs StringCName intCWeight intCHeight 构造方法 Name CName Weight CWeight Height CHeight publicvoidShowDog Graphicsg intx inty g drawString Name Name x y g drawString Weight Weight x y 20 g drawString Height Height x y 40 dogs类定义毕 publicclassc4 3extendsApplet publicvoidpaint Graphicsg dogsDane newdogs GreadDane 100 23 dogsSetter newdogs IrishSetter 20 30 Dane ShowDog g 25 25 Setter ShowDog g 25 120 7 构造方法重载 改写c4 2为c4 3 publicdogs StringCName 构造重载 Name CName dogsDane newdogs Jack 使用重载构造 publicdogs dogsDane newdogs 4 4静态变量和静态方法 当一个类的多个对象需要共享一个数据时 例 新生入学 创建一个学生对象 学生的总数累加1例 学生的各门成绩的总分不同 但是要标准化到100分 这个总分是所有学生对象共享的1 静态变量的声明static类型变量名classStudent Stringname intage doublescore staticlongtotalNum staticdoublenormalScore 说明 Static数据成员不属于类的任何一个具体的对象 而是属于这个类的它被保存在类内存的公共存储区内 而不是某个对象的内存中 一个类的任何对象访问它 值都相同如学生总数新报道3个同学Students1 s2 s3 System out println s1 totalNum 3System out println s2 totalNum 3System out println s3 totalNum 3引用 类名 成员名System out println Student totalNum 该staic数据成员的作用域仍属于该类域 静态数据成员的初始化 用静态初始化器classStudent Stringname intage doublescore staticlongtotalNum staticdoublenormalScore 静态变量初始化器static totalNum 0 学生总数normalScore 120 标准化总分 importjava lang classStudent Stringname intage doublescore staticlongtotalNum staticdoublenormalScore static 静态变量初始化器totalNum 0 normalScore 120 publicStudent StringCname name Cname totalNum publicvoidsetNormalScore doublens normalScore ns publicvoidsetScore doubles score s normalScore publicdoublegetScore returnscore publicclassStaticVarTest publicstaticvoidmain Stringargs Students1 newStudent chen Students2 newStudent zhao s1 setScore 116 s2 setScore 120 System out println Stu totalNum Student totalNum System out println S1 totalNum s1 totalNum System out println S2 totalNum s2 totalNum System out println s1 name tscore s1 getScore System out println s2 name tscore s2 getScore 运行结果Student totalNum 2S1 totalNum 2S2 totalNum 2chenscore 0 9666666666666667zhaoscore 1 0 static 静态变量初始化器totalNum 0 normalScore 120 静态变量 2 静态方法 属于整个类的类方法 用static修饰的方法 例如 publicstaticvoidmain args 调用方式 对象名 方法名或类名 方法名Students1 s1 setNormalScore Student setNormalScore 适于 无需建立对象就可以直接调用的方法例 Math abs 例 Student setNormalScore static静态方法的使用要求 Stati
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年不动产登记代理实务考试题库及答案
- 2025年高级技师题库及答案
- 冬天捕鱼营销方案
- 工地拍摄活动策划方案
- 签到活动如何策划方案
- 护坡模具施工方案
- 酒直播活动策划方案
- 2025年设备管理员上岗试题及答案
- 高三英语读后续写专项复习-忠诚的守护者导学案
- 2025年网络安全自查报告范文
- 2025年广东普宁市公安局公开招聘警务辅助人员80人模拟试卷附答案详解(完整版)
- 中建永临结合做法选用图册2024
- DB11-T 2483-2025 水务行业反恐怖防范要求
- 生物课程标准解读
- 爆破作业分级管理办法
- 硅胶生产车间管理办法
- 企业员工旅程地图绘制
- DB15∕T 654-2021 公路波纹钢管(板)桥涵设计与施工规范
- 代持股权挂名法人协议书
- 卓越工程师能力体系构建与实战成果汇报
- 光伏运维安全培训
评论
0/150
提交评论