实验9继承与多态(抽象类和接口).docx

实验9继承与多态(抽象类和接口).docx

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验 9 继承与多态 、实验目的 理解类的继承,掌握变量隐藏、方法覆盖的概念。 (2 )理解引用类型的变量的赋值转换原则。 (3 )理解多态概念,掌握方法的匹配调用原则; (4 )理解抽象类的使用; (5 )理解 this 和 super 的含义及使用。 (6 )理解访问控制符的使用 二、 知识要点 1、继承的概念 通过类的继承, 祖先类的所有成员均将成为子类拥有的“财富”。但是能否通过子类对 象直接访问这些成员则取决于访问权限设置。 Object 类是所有类的祖先。 2、构造方法与继承关系 构造方法不存在继承关系,子类中是如何给父类继承的属性赋初值呢? 子类通过调用父类的构造方法给父类的属性赋值, 在子类的构造方法的第 1 行可以通过 super 去调用父类的构造方法,如果没有 super 调用,则默认调用父类的无参构造方法。所 以,在父类中编写构造方法通常均要提供无参构造方法。 3、对象引用变量赋值原则 可以将子类的对象引用赋值给父类引用变量, 由于父类能操作访问属性和方法的子类已 全部继承。 但将父类引用变量的值赋给子类引用变量就受到限制, 必须进行强制转换, 编译 总是认可强制转换,但运行程序时如果不能正确转换就会报错。 4、多态的两种表现形式 ( 1) 同一类中的方法多态(方法重载):同一类中允许多个同名方法,通过参数的数 量、类型的差异进行区分。 ( 2) 子类对父类方法的重新定义 (方法覆盖) :方法名、 返回值和参数形态完全一样。 ( 3) 方法调用的匹配原则。 首先查找有否有参数一致的方法, 也就是精确匹配; 如果没有, 再检查实参是否能自动 转换为形参类型,能转换也可以匹配调用,这种匹配称为转换匹配。 5、继承关系中对成员的访问(最近匹配原则) 由于继承关系的存在,一个对象的属性和方法中有自己新定义的,也有从祖先类继 承的。允许子类对父类定义的属性和方法重新定义, 一个对象查找其属性和方法时按什么原 则查找呢,实际也是“最近匹配原则”。 (1) 在子类中访问属性和方法时将优先查找自己定义的属性和方法。如果该成员在本 类存在,则使用本类的,否则,按照继承层次的顺序到其祖先类查找,如图 8-1所示。 (2) this关键字特指本类的对象引用,使用 this访问成员则首先在本类中查找,如 果没有,则到父类逐层向上找。 (3) super特指访问父类的成员,使用 super首先到直接父类查找匹配成员,如果未 找到,再逐层向上到祖先类查找。 1 6、 抽象类 定义形式: abstract class 类名称{ 成员变量; 方法(){……} II定义一般方法 abstract 方法();II定义抽象方法 } 在抽象类中可以包含一般方法和抽象方法。 抽象类表示的是一个抽象概念,不能被实例化为对象。 继承抽象类的具体类必须将抽象类中抽象方法覆盖实现。 7、 接口 定义形式: in terface 名称{ 静态常量; 抽象方法(); } 接口中包含静态常量和抽象方法. 类继承接口,实现接口中的所有方法. 三、上机练习 1.编写程序,在程序中定义一个抽象类Area、两个 Area类的派生子类 RectArea和 1.编写程序,在程序中定义一个抽象类 RoundArea类,以及一个实现类 ImpleArea类(main方法所在的类).程序的实现如下: (1) 抽象类Area类中只包含一个抽象方法: double area()。 (2) 子类RoundArea类通过覆盖父类中的抽象方法 area来求圆的面积,另一个类 RectArea类通过覆盖父类中的抽象方法 area求长方形的面积 (3) 圆的半径和长方形的边分别定义为子类 RoundArea类和RectArea类的域,都为 double 类型。 (4) ImpleArea类中接收键盘输入(Scann er),输入内容分别为长方形的边和圆的 半径,求出长方形和圆的面积,并在屏幕上显示。 2.某公司有3种不同的雇员,分为 A,B,C3个级别。公司的总雇员数目因月份的不同可 能发生变化。每个级别的月薪是不同的。编写一个程序计算公司一个月需要支付的全部 薪水。 要求有一个 abstract 类,类名为 Employee。 Employee 的子类有 Aemployee, Bemployee, Cemployee. Employee 类必须有一个 abstract 方法 注意:Aemployee, Bemployee, Cemployee声明的对象表示的是一个员工,而不是一类员 工。成员变量没有要求的,不能乱加。 public abstract double earnings();〃 返回级另U工资 子类必须重写父类的 earnings方法(必须的,继承抽象类必须实现抽象方法),给出各

文档评论(0)

ailuojue + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档