




已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Unit5 面向对象编程的高级概念 章节目标类的继承抽象类和接口Java语言的包内部类与嵌套类 1 类的继承 继承的实现 继承使得子类可以利用父类中定义的方法和变量 就像它们属于子类本身一样 classEmployee Stringname publicvoidshowName System out println name classManagerextendsEmployee Stringdepartment publicvoidshowInfo showName System out println Managerof department 2 classManagerextendsEmployee Stringdepartment publicvoidshowInfo showName System out println Managerof department 类的继承 域的隐藏 子类重新定义一个与父类那里继承来的域变量完全相同的变量称为域的隐藏 classEmployee Stringname Stringdepartment publicvoidshowName System out println name 3 类的继承 方法的覆盖 覆盖使得在子类中可重新定义父类已有的方法 从而使子类具有自己的行为 classEmployee Stringname publicvoidshowInfo System out println name classManagerextendsEmployee Stringdepartment publicvoidshowInfo System out println name System out println Managerof department 4 类的继承 this与super this和super是用来指代父类和子类的对象的关键字this 代表了当前对象的一个引用super 是当前对象的直接父类对象的引用二者还可以调用当前对象或父类对象的构造函数 classCircle doubler Circle intr this r r publicdoublearea returnr r Math PI classAppleextendsFruits publicApple intprice super price super method someParaList 5 类的继承 继承 隐藏和覆盖示例 amemberofMySubClassamemberofMyClassamemberofMySubClass publicclassMySubClassextendsMyClass publicStrings amemberofMySubClass publicvoidtest super test System out println s publicstaticvoidmain String args MySubClassmsc newMySubClass System out println msc s msc test classMyClass protectedStrings amemberofMyClass protectedvoidtest System out println s 6 类的继承 父子类对象转换原则 父类引用变量直接引用子类对象 classSuperClass intx classSubClassextendsSuperClass inty charch publicclassUseSuperSub publicstaticvoidmain String args SuperClasssp sp ref SubClasssb sb ref sp newSuperClass sb newSubClass sp ref sb sb ref SubClass sp ref 子类对象可以被视为是其父类的一个对象父类对象不能被当作是某一个子类的对象sb ref SubClass sp 强制类型转换 sp ref此时实际指向子类对象 7 类的继承 方法的重载 classDataRenderer voiddraw Strings voiddraw inti voiddraw floatf 方法的重载是实现Java语言多态机制的重要手段方法的重载与方法的覆盖不同 方法的重载不是子类对父类同名方法的重新定义 而是同一类中若干同名方法的重新定义系统仅通过参数列表选择匹配的方法定义 不能定义参数相同 返回值不同的同名方法 8 类的继承 构造函数的重载 publicclassEmployee privateStringname privateintsalary publicEmployee Stringn ints name n salary s publicEmployee Stringn this n 0 publicEmployee this Unknown 构造函数的重载 是指在同一个类中存在若干个具有不同参数列表的构造函数创建该类对象的语句会自动根据给出的实际参数的数目 类型和排列顺序调用相应的构造函数来完成对新对象的初始化操作 9 抽象方法与抽象类 抽象类 用abstract关键字来修饰一个类时 该类叫做抽象类 抽象类必须被继承 抽象类不能被直接实例化 它只能作为其它类的超类 这点与最终类 final类 正好相反 抽象方法 用abstract来修饰一个方法时 该方法叫做抽象方法 抽象方法必须被重写 抽象方法只有声明 不能有实现 定义了抽象方法的类必须是抽象类 10 Java语言的接口 接口定义了若干个抽象方法和常量 形成完成一个特定功能的属性集合 用来弥补单重继承的不足 凡是需要实现这种特定功能的类 都可以继承并在类内使用接口 接口是由常量和抽象方法组成的特殊类 接口中的属性都是用final修饰的常量 接口中的方法都是用abstract修饰的没有方法体的抽象方法 接口定义的仅仅是实现某一个特定功能的一组功能的对外接口和规范 功能的真正实现要由实现接口的各个类来定义接口中各抽象方法的方法体 Java语言通过接口实现了类间多重继承功能 11 接口的定义 接口的定义包括接口声明和接口体两部分 public interface接口名 extends父接口名列表 public static final 域类型域名 常量值 public abstract native 返回值类型方法名 参数列表 throws异常列表 publicinterfaceMyInterface intMAXSIZE 1024 publicabstractmyMethod Stringname 12 接口的定义 系统默认 接口中所有属性都是publicstaticfinal 公共静态最终 系统默认 接口中的所有方法都是publicabstract 公共抽象 13 接口的实现 publicclassCanDoimplementsDoable publicvoiddoThis whatever publicintdoThat whatever etc publicinterfaceDoable publicstaticfinalStringNAME publicabstractvoiddoThis publicabstractintdoThat 14 Java语言的包 包是一种较为松散的类的集合 通常把需要在一起工作的类 互相访问 放入一个包包在较大的范围内实现了OOP的封装机制 它把一组类和接口封装在一个包之内 这为管理大量的类和接口提供了方便 也有利于这些类和接口的安全Java编译器将包与文件系统的目录一一对应起来 packagejavalang javalang 15 包的声明 声明包的语法为 声明包的语句必须放置在程序的最前面 在类的声明之前 该语句后面的所有类都被当作包的成员缺省情况下 系统会为每一个 java 源文件创建一个无名包 这个源文件中定义的所有类都隶属于这个无名包 它们之间可以相互引用非private 私有 的域或方法 package包的名称 16 包的引用 通常一个类只能引用与它在同一个包中的公共类 若需要引用其它包中的类 可以采用以下几种方法 使用包名类名前缀java util Vectorvc newjava util Vector 加载需要使用的类importjava util Vector Vectorvc newVector 加载整个包importjava util Vectorvc newVector 使用环境变量classpathsetclasspath 17 内部类与嵌套类 classEnclosingClass staticclassAStaticNestedClass classInnerClass 18 内部类 嵌套类 在Java中 可以将一个类定义为另一个类的成员 这样的类被称为内部类或 嵌套类 使用内部类可以使类和类之间的从属关系 逻辑结构变得清晰易于理解 而且可以控制类与类的可见性 内部类可以访问包含它的类的属性像其他类成员一样 嵌套类同样可以声明为static 即静态嵌套类 staticnestedclass 对于非静态的嵌套类 称之为内部类 innerclass 19 classInnerClass publicInnerClass System out println createinnerclass publicvoidshowInformation a System out println callingmethodofinnerclass 内部类 嵌套类 20 publicclassOuterClass inta publicOuterClass a 0 System out println ThisisOuterClass 21 内部类 嵌套类 内部类也有作用域 其作用域是类定义所在的一对花括号 publicvoiduseInnerClass if true classInnerClass publicInnerClass System out println createinnerclass publicvoidshowInformation a System out println callingmethodofinnerclass 22 匿名内部类 有些情况下你要一个类 但是你不想为其创建一个新类 这时匿名内部类无疑是个好主意 匿名内部类是没有类名的局部内部类如果满足下面的一些条件 使用匿名内部类是比较合适的 只用到类的一个实例 类在定义后马上用到 类非常小 推荐在4行代码以下 给类命名并不会导致你的代码更容易被理解 23 匿名内部类 button addActionListener newActionListener publicv
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 汽车品牌营销研究创新创业项目商业计划书
- 初中班级读书计划多媒体应用
- 一年级数学上册培优辅差能力提升计划
- 部编版六年级下学期语文学习指导计划
- 2025版金融机构反洗钱法律顾问服务协议
- 2025版高端制造企业外籍研发人员劳动合同范本
- 2025年版国际贸易货物装卸搬运合同范本
- 2025版水电工程环境保护责任与监管服务合同
- 2025大学创新创业教育技术服务合同
- 2025版婚内家暴预防与社区支持服务协议
- 消化内科课件模板
- 拍摄与剪辑基础知识培训课件
- 项目实施进程汇报
- 医学检验质量安全管理培训
- 2025-2030AI辅助药物研发创新趋势分析与投资机会评估报告
- 2025仓库保管员试题及答案
- 保险执业登记管理制度
- 2025-2030中国电子墨水屏幕行业市场发展趋势与前景展望战略分析研究报告
- 口腔数字化技术课件
- 2025年安徽省农业职业技能大赛(动物检疫检验员)备赛试题库(含答案)
- 2024年重庆市中考英语试卷(A卷)(含答案与解析)
评论
0/150
提交评论