已阅读5页,还剩33页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java编程技术第三章Java语言的面向对象技术3 1对象与类的基本概念3 2对象3 3类3 4继承 3 1对象与类的基本概念 1 对象 现实世界对象的模型化 用变量来维护对象的状态 用方法来实现对象的行为 例如 轿车即 对象由描述状态的变量和可用来实现行为的方法组成 2 方法 描述对象的行为 是对对象的操作的代码 例如 加速 3 类 不同的对象具有相同的特征 变量和方法 即 包含共有变量和方法的一组对象 称为类 例如 汽车类的实例化即可创建对象 4 OOP OrientedObjectProgram 的特点封装性 对象将变量和方法封装在一起 成为一个整体 使得对外部接口和误操作具有保护性 继承性 一个对象获取另一个对象的特性的过程 可以实现代码复用 被继承的类 父类 基类继承父类的类 子类子类继承父类的状态和行为 也可以修改父类的状态和行为 同时增加自己特有的状态和行为 C 中支持多重继承 一个类可以继承多个父类 Java只支持单一继承 Java的基类是java lang Object 多态性 一个接口可以用作多个用途 特定的用途由环境所确定 一个接口多个用途 可以有二种方法实现 方法重载一个类中有多个相同名字的方法 根据传递给他们不同个数和类型的参数来决定使用哪个方法 编译时多态 在同一类中 B 方法重写子类重新实现父类的方法 运行时多态 在不同类中 消息的传递 对象之间需要通过信息交互来实现复杂的行为 消息包括三方面的内容 A 接收者B 接收者应采用的方法C 方法的参数消息传递的结果是产生行为或修改指定对象的状态 3 2对象对象是类的实例化3 2 1实例 例子1importjava awt classclass1 Buttonb1 b2 对象的说明publicclass1 b1 newButton ok b2 newButton 对象的实例化Stringb b1 getLabel b2 setLabel cacel 调用对象的方法publicststicvoidmain Stringargs newclass1 3 2 2对象的说明typename type可以是类库中的基类 也可以是自己定义的类 3 2 3对象的实例化一般用new运算符进行实例化 即调用构造方法 对象名 name new类名 参数表 构造方法 用于实现初始化新类的特殊方法 方法名与类同名 一个类可以有多个构造方法 通过不同的参数 个数类型 区分 3 2 3对象的使用 1 引用对象的成员变量对象名 成员变量名 2 调用对象的方法对象名 方法名 参数表 注 有无返回值 3 3类3 3 1类的基本组成一个类中通常都包含数据与函数两种类型的元素 我们一般把它叫作属性和成员函数 在很多时候我们也把成员函数称为方法 method 将数据与代码通过类紧密结合在一起 就形成了现在非常流行的封装的概念 Class类名 type1变量1 typen变量n 定义属性变量 成员变量 类名 参数表 定义构造方法type1方法1 参数表 方法体 typen方法n 参数表 方法体 定义方法 例子2 publicclassRectangle 类说明intwidth height 定义成员变量Rectangle intx inty width x height y 以上为构造方法intgetArea inta a width height returna 方法getArea publicvoiddrawRect inti j for i width i 0 i for j height j 0 j System out print System out println 方法drawArea importjava io classno41 类说明publicstaticvoidmain Stringargs throwsIOException Rectangler1 对象说明r1 newRectangle 4 5 对象初始化System out println r1 getArea r1 drawRect 调用对象的方法intc 0 try c System in read catch IOExceptione 例子3 VariableTest javaclassVariable 成员变量intx 0 y 0 z 0 成员方法voidinit intx inty this x x this y y intz 5 System out println ininit System out println x x y y z z publicclassVariableTest main方法publicstaticvoidmain Stringargs 类实例化Variablev newVariable System out println beforeinit System out println x v x y v y z v z 访问成员方法v init 25 40 System out println afterinit System out println x v x y v y z v z intc 0 try c System in read catch IOExceptione 结果为 beforeinit x 0y 0z 0 ininit x 25y 40z 5 afterinit x 25y 40z 0 3 3 2类的说明一般格式 修饰符 class类名 extends子句 implements子句 1 修饰符 abstract抽象类final最终类public公有protected保护private私有friendly友好friendly 友好类当未显示指定访问权限 隐含地认为friendlyprotected 保护类 能被本类 子类 同一包中的类访问 2 extends继承某个基类 3 implements实现接口 3 3 3成员变量类的状态是通过成员变量来表示的 其说明在类体内 方法体外 变量修饰符 类型名字 1 变量修饰符A static 静态变量 可以直接被引用 而不需引用类得到实例Classname member例子见下一页B final 变量的值在整个执行过程中不能改变 常量 C 访问权限 private 私有 只能被定义它的类访问public 公有 能被所有类访问 类 static 变量在所有类的实例中共享 可以被标记为public或private 如果被标记为public而没有该类的实例 可以从该类的外部访问 例子 static变量 publicclassCount privateintserialNumber privatestaticintcounter 0 publicCount counter serialNumber counter 这个例子中 被创建的每个对象被赋于一个独特的序号 从1开始并继续往上 变量counter在所有实例中共享 所以 当一个对象的构造函数增加counter时 被创建的下一个对象接受增加过的值 Static变量在某种程度上与其它语言中的全局变量相似 Java编程语言没有这样的全局语言 但static变量是可以从类的任何实例访问的单个变量 如果static变量没有被标记成private 它可能会被从该类的外部进行访问 要这样做 不需要类的实例 可以通过类名指向它 publicclassStaticVar publicstaticintnumber publicclassOtherClass publicvoidmethod intx StaticVar number 注 非静态变量只限于实例 并只能通过实例引用被访问 friendly 友好当未显示指定访问权限 隐含地认为friendly同一的包中其他的类可以引用 其他包中的不可以 protected 保护能被本类 子类 同一包中的类访问transient 声明为临时变量 当对象不在使用时 JVM需要将对象的所有的成员变量和成员方法进行保存 如果想JVM忽略变量的保存 即可以使用此定义 volatile 声明为受异步保护的变量 在多线程运行环境中 一个成员变量可能被多个线程修改 如果想保持变量的一致性 即可以使用此定义 类的成员变量和成员方法的访问权限符的含义 3 3 4方法的定义和实现用方法来实现对象的行为 1 方法的说明 修饰符 返回类型方法名 参数表 1返回类型 变量和对象 注意void 在方法声明中指定的返回类型不为void 方法中必须有return语句 返回指定类型的值 返回值的数据类型必须和声明的一致 或完全一致 或是声明的子类 2参数表 变量和对象 2 方法的重载在同一类中用相同的名字定义多个方法 同名的方法利用参数的个数和类型来区分 例子 application 例子4 MethodOverLoadingTest javaimportjava awt importMethodOverLoading publicclassMethodOverLoadingTest publicstaticvoidmain Stringargs MethodOverLoadingmth newMethodOverLoading mth receiveData 3 mth receiveData 1 3 mth receiveData 73 929 mth receiveData itisright classMethodOverLoading voidreceiveData inti System out println receiveanintData System out println I i voidreceiveData intx inty System out println receivetwointData System out println X x Y y voidreceiveData doublei System out println receiveandoubleData System out println I i voidreceiveData Strings System out println receiveanStringData System out println S s 例子5 applet MethodOverApplet javaimportjava awt importjava applet publicclassMethodOverAppletextendsApplet publicvoidpaint Graphicsg myparamp newmypara inta 3 Stringb uareok g drawString a a mp receiveData a 10 10 g drawString b b mp receiveData b 10 50 classmypara publicstaticStringreceiveData inti System out println receiveanintData return dataisinteger itis i publicstaticStringreceiveData Stringi System out println receiveanStringData return dataisString itis i 注意 方法的声明中 参数的类型和个数一样 只是返回类型不同 编译时报错 重载的方法必须返回相同数据类型 3 方法体this 当前对象 用于指向当前的对象变量super 用来引用父类中的变量和方法 4 static类方法没有它所属的类的任何实例 static方法可以被调用 publicclassGeneralFunction publicstaticintaddUp intx inty returnx y publicclassUseGeneral publicvoidmethod inta 9 intb 10 intc GeneralFunction addUp a b System out println addUp gives c 3 3 5构造和析构成员方法类有一个特殊的方法叫做构造方法 它通常用于初始化类的数据成员 在创建对象时 会自动调用类的构造方法 Java中的构造方法必须与该类具有相同的名字 而且不要声明返回类型 另外 构造方法一般都应用public类型来说明 这样才能在程序任意的位置创建类的实例 对象 1 构造方法的重载 2 super的应用super常用于调用父类的构造方法 super 参数表 除了构造成员方法以外 类还提供了析构成员方法 当对象被从内存中删除时 该成员方法将会被自动调用 通常 在析构成员方法内 你可以填写用来回收对象内部的动态空间的代码 1 构造方法例子6 publicclassXyz membervariablespublicXyz No argconstructor setuptheobject publicXyz intx int argconstructor setuptheobjectusingtheparameterx 注 因此可以通过为几个构造函数提供不同的参数表的办法来重载构造函数 当发出newXyz argument list 调用的时候 传递到new语句中的参数表决定采用哪个构造函数 构造方法例子7 如果有一个类带有几个构造函数 那么也许会想复制其中一个构造函数的某方面效果到另一个构造函数中 可以通过使用关键字this作为一个方法调用来达到这个目的 publicclassEmployee privateStringname privateintsalary publicEmployee Stringn ints name n salary s publicEmployee Stringn this n 0 publicEmployee this Unknown 说明 在第二个构造函数中 有一个字符串参数 调用this n 0 将控制权传递到构造函数的另一个版本 即采用了一个String参数和一个int参数的构造函数中 在第三个构造函数中 它没有参数 调用this Unknownn 将控制权传递到构造函数的另一个版本 即采用了一个String参数的构造函数中 注 对于this的任何调用 如果出现 在任何构造函数中必须是第一个语句 2 super的应用例子8 superDemo javaclassA inti j publicA inti intj this i i this j j intmultiply returni j endofclassAclassBextendsA inti k publicB inti intj intk intl super i j this i l this k k voidshow System out println super i super i System out println i i System out println j j System out println k k intmultiply inttemp super multiply returntemp i k endofclassB publicclasssuperDemo publicstaticvoidmain String args Bchild newB 5 6 8 10 child show intm child multiply System out println m m endofclasssuperDemo 程序结果 super i 5i 10j 6k 8m 2400 3 4继承3 4 1创建子类class子类名extends父类名 3 4 2子类实例化 1 重写构造方法 2 super 参数表 即调用父类的构造方法3 4 3方法重写 1 子类的方法与父类的方法完全一致 名字参数表返回类型 则隐藏父类 2 子类的方法与父类的方法不完全一致 不隐藏父类 例子9 继承中的访问权限和方法重写 覆盖 p79例子10 继承中的传递性p81例子11 方法重载p83例子12 p85体会面向对象编程的技术 3 4 4最终类和最终方法 1 最终类不能再有子类的类finalclassname 2 最终方法不能被子类重载的方法final返回类型方法名 例如 jdk安装目录下文件jre lib rt jar使用WinRAR解压java lang Integer class 可用Jbuilder查看源代码 3 4 5抽象类和抽象方法 1 抽象类abstractclassname 本身不能被实例化对象 只能作为其它类的父类 2 抽象方法abstract返回类型方法名 并没有具体实现的方法注意 1含有抽象方法的类必须被定义成抽象类2抽象类中不一定要有抽象方法3被子类继承 必须具体实现4构造方法不能用abstract例如 同上rt jar中的java lang Number class 可用Jbuilder查看源代码 packagejava lang Importsimportjava io Serializable publicabstractclassNumberimplementsSerializable FieldsprivatestaticfinallongserialVersionUID 8742448824652078965L ConstructorspublicNumber Methodspu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年高中一年级历史上学期单元测试试卷
- 初中物理教师读书心得体会
- 初中数学教研组的工作计划
- 初中实习报告
- 成都市 2024-2025 学年小学五年级地理期中预测试卷及答案
- 高中语文必修上册 含答案第3单元检测
- 高中语文必修上册同步练习 含答案-古诗词诵读
- 2025年吸痰填空试题及答案
- 陕西省公务员2025年公共基础知识真题汇编卷
- 2025年初中三年级化学下学期物质结构专项训练卷
- 5G通信模块设计项目分析方案
- 汽车维修入股协议合同
- 教育家精神课件
- 2026蒙牛「星动力」校园招聘笔试考试参考试题及答案解析
- 2025年机械行业安全生产考试题库(行业安全规范试卷)
- 2025年实验室检验质控知识考试试题及答案解析
- 2025贵州毕节市中级人民法院招聘聘用制法官助理30人考试参考题库及答案解析
- 医院地震疏散培训
- GB/T 7064-2017隐极同步发电机技术要求
- GB/T 40356-2021厨用刀具
- GB/T 304.9-2021关节轴承第9部分:通用技术规则
评论
0/150
提交评论