JAVA(七)-----类高级部分.doc_第1页
JAVA(七)-----类高级部分.doc_第2页
JAVA(七)-----类高级部分.doc_第3页
JAVA(七)-----类高级部分.doc_第4页
JAVA(七)-----类高级部分.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

类高级部分 一类的继承一类的继承 在现有类的基础上创建新的类,称派生类;也称子类;现有类称为基类或父类或超类;基类也可以是其它类的派生类;基类的直接派生类称为直接子类; Java中用extends来声明继承; Java只允许从一个类派生出子类; 基类本身可以独立使用;二继承的关系: 通过继承,派生类获得基类的成员;被继承的基类成员可以在派生类中访问;不能被继承的基类成员不能在派生类中访问;不能被继承的基类成员虽然不是派生类成员,但却是派生类对象组成的部分;基类 成员是否能被继承,由包和成员的访问属性决定;在同一个包中,基类中的Private成员不能被继承,其它成员可以被继承;在包之间,基类Private和未说明访问属性的成员不能被继承构造方法,作为一个特例,不能被继承;从基类继承的成员,其访问属性不变;基类中的Static成员,同样也属于派生类成员,由基类对象和 派生类对象共享;三隐藏的继承成员: 被继承的基类成员可在派生类中直接访问,有时用户在派生类中定义的成员名与继承成员的名称相同,会造成继承成员的隐藏; 要访问被隐藏的继承成员,用限定词Super; Super不能用在static初始化块中,也不能用在static方法中; 在派生类中隐藏继承的方法成员时,新定义的同名方法的可访问范围不能比继承成员的访问范围小; Public允许在所有地方访问,可被继承; Protected限制在一个包中所有的地方访问,可在包内,包外被继承; 未说明访问属性的成员只能在同一个类中访问,不能被继承; Private成员只能在同一个类中访问,不能被继承;四派生类的构造方法 基类中不能被继承的成员,也是派生类对象的组成部分; 基类中不能被继承的成员,可以通过被继承的方法来访问; 在创建派生类对象时,Java解释器会自动创建隐含的基类 对象,只是该对象不能直接被使用而已; 在派生类的构造方法中,可使用Super()方法,来调用基类的构造方法;如用户在派生类的构造方法中没有调用基类的构造方法,则解释器会自动插入Super()语句来调用基类的构造方法;如基类定义的构造方法带有参数,则导致编译错误,所以定义派生类时要显示的使用super; Super()方法必须是派生类构造方法的第一条语句,如不是,则会编译出错;super()方法之前只能是空行或注释语句;五多级继承Java中允许多级继承,即派生类可以是其它类的基类;继承具有传递性,派生类从基类中继承的成员,又可被自己的派生类继承;派生类称子类,派生类的派生类称间接子类;基类称直接基类,基类的基类称间接基类; 二多态 Java对数据类型执行强制检查,一个基本数据类型的变量只能存储相同类型的数据,一个对象变量只能引用相同类型的对象;在派生类中,一个基类对象可以引用一个子类对象;这一功能在java中用多态来解决; 应用多态的前提: 用基类变量引用子类对象; 基类变量调用的方法既是基类成员,也是子类成员; 被调用方法的名称、参数、返回值,在基类和子类中完 全相同;当子类与基类具有同名的方法,且方法的参数和返回值都相同时,便可应用多态机制;当基类变量调用对象方法时,java解释器根据基类变量引用的对象类型决定所调用的方法,而不是根据基类变量的类型来决定;* 只能用基类变量引用子类对象,不能用子类变量引用基类对象,否则提示类型不匹配; 三final Final声名数据成员时,表示该成员为常量初始化后,其值不能再修改;Final声名方法时,表示该方法在子类中不能覆盖,即不能在子类中定义同名的方法;Final声名类时,表示该类不能派生任何子类; 四抽象类 抽象类用abstract来声名: 抽象类中,可用abstract声名抽象方法,抽象方法没有方法体; 从抽象类派生子类时,在子类中实现继承的抽象方法;如果子类没有实现所有的抽象方法,则子类必须声名为抽象类; 与普通类类似,抽象类中也可以定义数据成员和非抽象方法;不管抽象类中是否包含抽象方法,都不能创建初象类的对象;但可以声名抽象类变量抽象类变量虽然不能用于引用抽象类对象(因为不能创建),但可用于引用实现了所有抽象方法的派生类对象;(多态性) 五Object类 Object类是所有类的基类; 在程序中,虽然没有用extends来声明,但编译器自动将用户定义的类作为object类的子类;object既然是所有类的基类,其变量也可以引用所有其它类的对象; Object定义的处理对象的方法:1. toString:public 返回字符串类名对象的十六进制散列码;将对象作为字符串使用时自动调用该方法;2. equals public 判断调用方法的对象和参数指定的对象是否为同一个对象;如果是返回true,反之不是同一个对象(即使类型,值也是相同的;)则返回false3. getclass:final public:返回包含对象信息的class类对象;class类对象保存了类和接口的信息,java虚拟机使用该信息创建对象和接口;class类提供一系列的方法;4. hashCode public 返回对象的散列码,用于将对象存储在散列表中;5. notify final public 用于唤醒当前对象关联的一个线程;6. notifyAll final public 用于唤醒当前对象关联的所有线程;7. wait final public使线程进入等待状态,直到重新被唤醒;8. clone protected用于复制对象;9. finalize protected在销毁对象时至执行清理工作10. 非final方法均可在子类中重新定义,实现用户需要的功能; Finalize虽可在销毁对象时自动调用,但销毁对象由虚拟机自动处理,不能确定虚拟机的处理时间,因而不寄希望与使用finalize方法来完成某种操作; 六接口一接口介绍1. 接口是一种特殊的类,用interface声名2. 接口的特殊性:常量默认为静态常量(public,static,final) 接口中的方法默认为公有抽象方法(public,abstract) 不允许用private,protected来声名接口成员和结构,所以 可以在任何地方使用;3. 接口成员可以只是常量,或只是方法,或有常量又有方法;接口中的方法是抽象的方法,必须实现之后才能使用;从抽象方法看,接口与抽象类相同;4. 接口定义保存在与接口同名的.java文件中;5. 抽象类使用extends来表示继承的关系,然后在子类中实现抽象的方法;接口用implements表示被子类继承,同样在子类中实现抽象方法;二接口常量的使用: 直接使用接口常量,与类中的公有静态常量类似,可使用接口名来直接引用接口常量; 使用implements关键字在类中实现接口,类与接口形成继成的关系,类继承接口的所有成员,这样可以直接引用在类型引用接口中定义的常量;三接口方法的使用 接口方法为抽象方法,必须实现后才能使用,使用 Implements在类中实现接口后,如类中只有部分实现了接口 方法,则应将类声名为抽象类;只有全部实现接口方法后,才 能定义类的对象;四接口的继承: 可以使用extends从一个接口派生新的接口,与类的派生机制相同,可将

温馨提示

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

评论

0/150

提交评论