- 1、本文档共84页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
程 序 设 计 方 法2010-12-1 JAVA 程序设计与实训指导---程序设计方法基础 第10章 继承、接口和包 学习目标: 类的继承 抽象类 接口 包 作业 10.1 类的继承 类继承的概述 类继承的实现 方法的重写 重写构造方法 子类访问父类方法 类继承概述 现在你为某公司设计一个人事管理系统, 设计了如下一些类: 类继承概述 如果这样设计类,你觉得有什么缺点吗? 代码冗余!!! 类继承概述 类继承概述 Java中,所有的类都是通过直接或间接地继承java.lang.Object得到的。 10.1 类的继承 思考题: 1、下面列出了4组类的类名,根据你的理解,请分别指出每组中 哪个类应该是父类,哪个类应该是子类? Bird(鸟)/Parrot(鹦鹉) Chinese(中文)/Language(语言) Furniture(家具)/Desk(桌子) Tulip(郁金香)/Flower(花) 2、下面列出了3个类的类名,请举例列出每个类的3个子类类名。 Food(食物) Movie(电影) Hobby(喜好) 10.1 类的继承 类继承的概述 类继承的实现 方法的重写 重写构造方法 子类访问父类方法 类继承的实现 格式: 说明: extends为关键字。SubClass为子类名。SuperClass为父类名。 这里子类直接地继承了父类,所以SubClass是SuperClass的直接子类;如果SuperClass又继承了其他类,那么SubClass就有间接父类了! 如果缺省extends子句,则该类为java.lang.Object的子类。 类继承的实现 类继承的实现 使用类继承来设计程序的好处: 更容易理解和书写程序 更容易修改程序 允许代码复用 读一读 (Pg165 10-1) 类继承的实现 子类能够继承什么? 子类能够继承父类中public和protected的成员。 子类能够继承父类中没有访问控制的成员,只要子类和父类在同一个包内。 子类不能继承父类隐藏的成员变量和重写的父类方法。 子类不能继承父类中private成员。 子类不能继承父类中构造方法。因为构造方法不是类的成员。 类继承的实现 继承的特点: 继承是单方向的。我们只允许子类的对象继承父类中的成员变量和方法,父类的对象是不能继承子类中的成员变量和方法。 继承的分类 单继承:一个子类只能有一个直接父类。 多继承:一个子类可以有多个直接父类。 注:Java只支持单继承而不继承多继承。 类继承的实现 T H E E N D ? 10.1 类的继承 类继承的概述 类继承的实现 方法的重写 重写构造方法 子类访问父类方法 方法的重写 定义: 方法的重写指的是子类中定义与父类中已定义的名称 相同、参数列表相同、返回类型相同、但方法体不同 的方法。这也体现了Java多态性的特征。 例: 方法的重写 方法的重写 10.1 类的继承 类继承的概述 类继承的实现 方法的重写 重写构造方法 子类访问父类方法 重写构造方法 什么是构造方法? 重写构造方法 如果父类和子类中分别定义了一个不带任何参数的构 造方法,情况会是怎样呢? 重写构造方法 结论一、 如果父类和子类中分别定义了一个不带任何参数的构造方法,在创建子类对象时,如果调用了子类中不带参数的构造方法时,那么先调用父类中的无参构造方法,再调用子类的无参构造方法。? 重写构造方法 例如: 重写构造方法 读一读 (Pg170 10-4) 10.1 类的继承 类继承的概述 类继承的实现 方法的重写 重写构造方法 子类访问父类方法 子类访问父类方法 子类和父类中都包含了具有同名的一般方法,如果在子类中的某个方法要调用这两个同名方法,那么又该怎样呢? 子类访问父类方法 子类和父类中都包含了具有同名的一般方法,如果在子类中的某个方法要调用这两个同名方法,那么又该怎样呢? 子类访问父类方法 class SuperClass{ void print( ){ System.out.println(你调用了父类中的方法!); } } class SubClass extends SuperClass{ void print( ){ System.out.println(你调用了子类中的方法!); } void callPrint(){ this.print();//这里的this也可以省略 super.print(); } } public class Test{ public static
文档评论(0)