- 1、本文档共35页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
(Java程序的设计课件)第8章 继承、抽象类和接口(第4版).ppt
L/O/G/O * 第8章继承、抽象类和接口 * 本章主要内容 利用接口实现类的多重继承 在子类中访问父类的成员 覆盖父类的方法 内部类的匿名类 包(类库) 子类的创建 抽象类与抽象方法 接口及接口的实现 * 8.1 类的继承 通过类的继承方式,可以不用编写相同的代码就能开发出新的类,即程序代码复用。 被继承的类称为父类或超类(superclass),由继承而得到的类称为子类(subclass)。 父类 b1 b2 bn a1 a2 an A B …… 8.1 类的继承 Java语言中不支持多重继承,所以一个类只能有一个直接父类。 父类是所有子类的公共成员的集合,而每个子类则是父类的特殊化,是对公共成员变量和方法在功能、内涵方面的扩展和延伸。 子类继承父类的成员变量和方法,同时还可修改、重写和添加父类的成员变量和方法。 Java语言中有一个名为java.lang.Object的特殊类,所有的类都是直接或间接地继承该类而得到的。 * 8.1 类的继承 8.1.1 子类的创建 Java语言中类的继承是通过extends关键字来实现的,其格式如下: class SubClass extends SuperClass { …… } 子类可以从父类那里继承所有非private的成员作为自己的成员。 若无extends关键字,则该类默认为java.lang.Object类的子类。 子类的每个对象也是父类的对象(“即是”性质),但父类对象不一定是子类的对象。 * 见教材例8.1 8.1 类的继承 8.1.2 在子类中访问父类的成员 使用super不但可以访问父类的构造方法,还可以访问父类的成员变量和成员方法,但super不能访问在子类中添加的成员。访问父类成员的格式如下: super.变量名; super.方法名; 由于在子类中不能继承父类中的private成员,所以无法在子类(类外)里访问父类中的这种成员。但如果将父类中的成员声明为protected(保护成员)的,则该成员不仅可以在父类中直接访问,同时也可以在其子类中访问。 * 见教材 例8.3 8.1 类的继承 8.1.2 在子类中访问父类的成员 用protected修饰的成员可以被该类自身、同一包中的其他类及其子类访问。 用private protected修饰的成员可以被该类自身、所有的子类(无论是否与该类处于同一包中)访问。 * 8.1 类的继承 8.1.3 覆盖 覆盖与重载相似,均是Java“多态性”的体现。 覆盖是指在子类中,定义名称、参数个数与类型均与父类完全相同的方法,用以重写父类里同名方法的功能(方法实现体)。 覆盖父类的方法:子类继承父类中所有可被访问的成员方法时,若子类的方法与父类的方法同名,则不能继承,此时子类的方法是覆盖父类的方法。 在子类中覆盖的方法时,可扩大父类中的方法权限,但不能缩小其权限。 * 见教材 例8.4 重载是指在同一个类定义名称相同,参数列表不同的方法。 不能覆盖父类中声明的final或static的方法 8.1 类的继承 8.1.3 覆盖 用父类的变量访问子类的成员:只限于“覆盖”的情况发生。格式: 父类 对象 = new 子类(); 对象 .子类方法; * 见教材 例8.5 8.1 类的继承 8.1.4 不可被继承的成员与最终类 如果用final来修饰类的成员,则该成员为最终成员。 若父类的成员不希望被子类的成员所覆盖,则可将它们声明为final。 最终类:用final修饰的类。该类不能有子类。 成员变量若同时被static和final修饰,则表示常量,若没有初始化则按默认值初始化。 仅用final不用static修饰则必须且只能赋值一次,不能默认。方式:定义时赋值;构造方法赋值。 * 见例8.6 8.1 类的继承 8.1.5 Object类 Object类是所有类的源。Object类常用方法见P150表8.1所示。 eaqual()方法。对于字符串变量来说,”==”与equal()的区别:前者用于比较两个变量本身的值(即两个对象在内存中的首地址 ),而后者则是比较两个字符串中所包含的内容是否相同。对于非字符串变量来说,两者都是用来比较其所指对象在堆中的首地址。 * 见教材例8.7 8.1 类的继承 8.1.5 Object类 toString( )方法:将调用该方法的对象的内容转换成字符串,并返回其内容,但返回的是一些没有意义且看不懂的字符串。若要用该方法返回对象的内容,可以重新定义该方法以覆盖父类中的此方法以满足需
您可能关注的文档
- (3D打印技术知识课件)项目四-任务二-紫外光固化技术知识的打印原理.ppt
- (3D打印技术知识课件)项目四-任务二-紫外光固化技术知识的打印材料分析.ppt
- (3D打印技术知识课件)项目四-任务二-紫外光固化技术知识的支撑材料分析.ppt
- (3D打印技术知识课件)项目四-任务五-选择性激光烧结技术知识的发展方向.ppt
- (3D打印技术知识课件)项目四-任务五-选择性激光烧结技术知识的工艺流程.ppt
- (3D打印技术知识课件)项目四-任务五-选择性激光烧结技术知识的应用市场.ppt
- (3D打印技术知识课件)项目四-任务五-选择性激光烧结技术知识的打印原理.ppt
- (3D打印技术知识课件)项目四-任务五-选择性激光烧结技术知识的打印材料分析.ppt
- (3D打印技术知识课件)项目四-任务五-选择性激光烧结技术知识的起源及现状.ppt
- (3D打印技术知识课件)项目四-任务六-粉末粘结技术知识的优势与缺陷.ppt
文档评论(0)