




已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java程序设计 第三部分面向对象程序设计 高级篇 学习目标 理解类继承的概念以及父类和子类的关系理解super关键字掌握方法覆盖 多态性 动态绑定和对象的强制类型转换理解数据字段和静态方法的隐藏掌握修饰符 protected final设计和使用抽象类掌握接口的声明和实现 Employee和Manager publicclassEmployee publicStringname publicdoublesalary publicDatebirthDate publicStringgetDetails publicclassManager publicStringname publicdoublesalary publicDatebirthDate publicStringdepartment publicStringgetDetails 继承 publicclassEmployee publicStringname publicdoublesalary publicDatebirthDate publicStringgetDetails publicclassManagerextendsEmployee publicStringdepartment 父类和子类 语法classClassNameextendsSuperclass classbody 如果classC1extendsC2 则称C1为子类 subclass C2为父类 superclass 子类继承了父类中可访问的数据和方法 子类也可添加新的数据和方法 子类不继承父类的构造函数 一个类只能有一个直接父类 例几何对象类 编写程序 父类GeometricObject 两个子类Circle和Rectangle Example Circle java Rectangle java TestCircleRectangle java super关键字 调用父类的构造函数super parametersopt 调用父类的的构造函数 必须是子类构造函数的第一条语句 如果子类中没有显式地调用父类的构造函数 那么将自动调用父类不带参数的构造函数 父类的构造函数在子类构造函数之前执行 调用父类的成员super datasuper method parameters 方法覆盖 如果子类重新定义了从父类中继承的实例方法 称为方法覆盖 methodoverride 仅当方法是可访问的实例方法时 才能被覆盖 即私有方法不能被覆盖 静态方法不能被覆盖 如果静态方法在子类中重新定义 那么父类方法将被隐藏 一旦父类中的方法被覆盖 则不能从子类外部访问被覆盖的方法 在子类中可以使用super引用被覆盖的方法 Example Circle java Rectangle java TestCircleRectangle java 覆盖与重载 publicclassTest publicstaticvoidmain String args Aa newA a p 10 classB publicvoidp inti classAextendsB publicvoidp inti System out println i publicclassTest publicstaticvoidmain String args Aa newA a p 10 classB publicvoidp inti classAextendsB publicvoidp doublei System out println i Object类 java lang Object类是所有类的父类 如果一个类在声明时没有指定父类 那么这个类的父类是Object类 equals方法 用于测试两个对象是否相等 Object类的默认实现是比较两个对象是否引用同一个对象 toString方法 返回代表这个对象的字符串 Object类的默认实现是返回由类名 和hashCode组成 多态性 动态绑定 当调用实例方法时 由Java虚拟机动态地决定所调用的方法 称为动态绑定 dynamicbinding 或为多态 polymorphism 假定对象o是类C1的实例 C1是C2的子类 C2是C3的子类 Cn 1是Cn的子类 也就是说 Cn是最一般的类 C1是最特殊的类 在Java中 Cn是Object类 如果调用o的方法p Java虚拟机按照C1 C2 Cn的顺序依次查找方法p的实现 一旦找到一个实现 将停止查找 并执行找到的第一个实现 通用编程 父类变量可以引用子类对象 针对父类对象设计的任何代码都可以应用于子类对象 多态性允许方法使用更通用的类作为参数类型 如果方法参数是父类 那么这个参数可以接受任何子类对象作为实参 当调用这对象的方法时 将动态绑定方法的实现 Example PolymorphismDemo java 类型转换 类型转换 typecasting 可以将一个对象的类型转换成继承结构中的另一种类型 从子类到父类的转换是合法的 称为隐式转换 m newStudent Objecto newStudent m o 从父类到子类必须显式转换 被转换的变量所指向的对象的类型必须是转换类或它的子类 Objecto newStudent Students Student o o所指向的对象必须是Student或Student子类的对象 instanceof操作符 可以用instanceof操作符判断一个对象是否是一个类的实例 表达式返回boolean值 语法referenceVariableinstanceofTypeName 例强制类型转换 编写程序 创建两个几何对象 圆和矩形 调用displayObject来显示结果 如果对象是圆 显示半径和面积如果对象是矩形 显示面积 Example TestPolymorphismCasting java 隐藏数据字段和静态方法 如果子类中声明的数据字段和静态方法与父类中的名称相同 那么父类中的将被隐藏 hide 通过super关键字访问被隐藏的数据字段和静态方法 通过父类型的变量访问被隐藏的数据字段和静态方法 成员访问实例方法根据变量所引用的对象的实际类型进行访问 数据字段和静态方法根据变量的声明类型进行访问 Example HideDemo java Ax newB protected修饰符 protected修饰符用于修饰数据和方法 可以被同一个包中的任何类或不同包中的子类访问 C1 publicintxprotectedintyintzprivateintu C2中的代码可以访问x y zC3中的代码可以访问c1对象中的x y zC4中的代码可以访问x yC5中的代码可以访问c1对象中的x 类成员的访问控制符类的访问控制符public 类可以被任何包中的类访问无 package 只有同一个包中的类可以访问 访问控制符 final修饰符 final数据 常量 数据初始化后不能再修改 final方法 最终方法 子类不能覆盖 final类 最终类 不能派生子类 String StringBufferfinal局部变量 数据初始化后不能再修改 抽象类和抽象方法 Java中可以定义不含方法体的方法 方法的方法体由该类的子类根据自己的情况去实现 这样的方法称为抽象方法 abstractmethod 包含抽象方法的类必须是抽象类 abstractclass 一个类C如果满足下面的任一条件 则该类包含抽象方法 类C显式地包含一个抽象方法的声明 类C的父类中声明的抽象方法未在类C和它的父类中实现 类C的父接口中声明或继承一个方法 并且类C中未声明或继承一个方法来实现它 注意 抽象类和抽象方法必须用abstract关键字来修饰 只有实例方法可以声明为抽象方法 抽象类不能被实例化 即不能用new关键字创建对象 抽象类的父类可以是具体类 具体子类必须实现抽象父类中所有抽象方法 否则子类需要声明为抽象类 抽象类示例 Example GeometricObject java Circle java Rectangle java TestGeometricObject java 接口 接口是常量和抽象方法的集合 接口是能力 规范 协议的反映 语法 modifier interfaceinterfaceName constant declaration abstract method declaration 接口中的数据字段隐含为publicstaticfinal接口体中的方法隐式地声明为publicabstract 使用接口 可以在能够使用任何其他数据类型的地方使用接口 接口类型属于引用类型 接口类型的变量可以存储 空引用 null 任何实现该接口的类的实例的引用类实现接口的语法 modifier classclassName extendssuperclass implementsinterfaceNameList member declaration 除非类被声明为abstract 所有父接口中声明的成员方法必须被实现 或者通过在类中声明或者通过从父类继承已有的方法声明 例1 publicinterfaceFlyer voidtakeOff voidland voidfly publicclassAirplaneimplementsFlyer publicvoidtakeOff 加速直到离地升空 收起起落架 publicvoidland 放下起落架 减速并降低副翼直到降落 刹车 publicvoidfly 保持引擎运转 例2 例3 例4 接口继承 一个接口可以继承多个接口 语法 modifier interfaceinterfaceName extendsinterfaceNameList declaration 如果接口声明中提供了extends子句那么该接口就继承了父接口的成员类型 方法和常量 这些接口称为声明接口的直接父接口 任何实现该接口的类 必须实现该接口继承的其他接口 接口和抽象类的比较 基本数据类型的包装类 作用为基本数据类型提供方法和常量值用于只能处理对象引用的地方包装类的对象的值是不变的 Number Byte Short Integer Long Float Double Character Boolean Object 构造函数与通用方法 构造函数以一个对应的基本数据类型为参数以字符串为参数 除了Character 通用方法publicstaticTypevalueOf Stringstr publicStringtoString publictypetypeValue publicintcompareTo Typeother publicintcompareTo Objectobj publicbooleanequals Objectobj publicinthashCode Number 方法publicabstractintintValue publicabstractlonglongValue publicabstractfloatfloatValue publicabstractdoubledoubleValue publicbytebyteValue publicshortshortValue 整数包装类 Byte Short Integer Long方法publicstatictypeparseType Strings publicstatictypeparseType Strings intradix publicstaticTypevalueOf Strings intradix publicstaticStringtoString typeval intradix publicstaticStringtoHexString typeval publicstaticStringtoOctalString typeval publicstaticStringtoBinaryString typeval 浮点包装类 Float Double常量POSITIVE INFINITYNEGATIVE INFINITYNAN方法publicbooleanisInfinite publicbooleanisNaN publ
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 跨国贸易协定比较分析及影响评估
- 企业融资经理年度工作总结范文
- 小学毕业生寄语及励志演讲稿
- 国际贸易合同主要条款解析与实务
- 2025年长春市绿园区面向社会公开招聘编制外人员(4号)(8人)笔试模拟试题及答案解析
- 2025年晋江市华侨中学招聘合同教师笔试备考试题及答案解析
- 隐私计算技术应用场景分析
- 公务员岗位职责与业务流程
- 电动工具安全使用培训教材
- 2025重庆丛林镇公益性岗位招聘13人笔试参考题库附答案解析
- GB/T 10125-2021人造气氛腐蚀试验盐雾试验
- GB 7231-2003工业管道的基本识别色、识别符号和安全标识
- 医疗机构财政电子票据管理平台建设方案
- 吸附及吸附过程课件
- 食品安全主题班会课件
- 二年级奥数《走迷宫》
- 管道施工安全检查表
- 云南省雨露计划改革试点资金补助申请表
- 部编版七年级上册语文《雨的四季》课件(定稿;校级公开课)
- 项目试运行上线确认单模板
- 道德与法治-四年级(上册)-《我们班 他们班》教学课件
评论
0/150
提交评论