- 1、本文档共29页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第七讲 继承与多态 继承与多态 第一部分 继承性 第二部分 多态性 第三部分 构造方法的继承与重载 第四部分 接口 第一部分 继承性 1.为什么要引入继承机制? 2.继承的好处 3.子类和父类的关系 4.子类和父类对象存储结构关系 5.继承的实现 6.域的继承与隐藏 7.方法的继承与覆盖 1.为什么要引入继承机制? 如果将相似的事物用不同的类型来表示,能够表示其差别,但体现不了他们之间存在共性的事实,且共性的表示也可能不一致。但扩充维护过程中需要对其共性部分进行修改时,就面临着保持一致性的问题 继承的概念:通过在不同层次上进行抽象,得到子类(派生类)和父类(基类),子类可以继承父类的非私有属性和方法。 2.继承的好处 继承体现出类的层次关系 减少代码冗余,增加软件复用性。 降低软件开发时间,提高软件维护效率。 3.子类和父类的关系 子类继承父类的属性和方法 父类能够接收的消息也可以被子类接收 子类可以增加新的方法和属性定义 继承分为:单继承——树状结构——继承父类 多继承——网状结构——接口实现 4.子类和父类对象存储结构关系 子类的对象的存储结构与父类对象的存储结构存在着“粘接”关系; 5.继承的实现 5.继承的实现 5.继承的实现 5.继承的实现 6.域的继承与隐藏 6.1域的继承 6.2域的隐藏 7.方法的继承与覆盖 7.方法的继承与覆盖 第二部分 多态性 1.什么是多态性? 2.上塑造型和下塑造型 3.重载和覆盖 1.什么是多态性? 多态性:指同名的不同方法在程序中共存。 多态性的实现有两种方式: 覆盖实现多态性:通过子类对父类的重定义来实 现。方法的参数个数,类型,顺序要完全相同。 重载实现多台性:通过在一个类中定义多个同名的方法来实现。方法的参数个数,类型,顺序要有所不同。 1.什么是多态性? 多态性:指同名的不同方法在程序中共存。 多态性的实现有两种方式: 覆盖实现多态性:通过子类对父类的重定义来实 现。方法的参数个数,类型,顺序要完全相同。 重载实现多态性:通过在一个类中定义多个同名的方法来实现。方法的参数个数,类型,顺序要有所不同。 2.上塑造型和下塑造型 3.重载和覆盖 覆盖 ——例4.5 重载 第三部分 构造方法的继承与重载 1.构造方法的继承 1.1子类继承父类的构造方法所遵循的原则: (1)子类无条件地继承父类的无参数的构造方法。 (2)子类无构造方法——继承父类的无参数构造方法 子类有构造方法——先执行父类的无参数构造方法 (3)对于父类带参数的构造方法,子类可以在自己构造方法中用super调用,但该调用语句必须是子类构造方法的第一个可执行语句。 1.2 父类与子类构造方法的执行顺序 class Exam{ Exam() {System.out.println(In constructor Exam);}} class PracticeExam extends Exam{ PracticeExam() {System.out.println(In constructor PracticeExam);}} class JavaPracticeExam extends PracticeExam{ JavaPracticeExam() {System.out.println(In constructor JavaPracticeExam);}} public class ExecuteOrder{ public static void main(String args[]){ JavaPracticeExam jpe=new JavaPracticeExam(); }} 1.2 父类与子类构造方法的执行顺序 2.构造方法重载 2.1 什么是构造方法重载? 在同一个类中定义不同参数的多个构造方法,以完成不同情况下对象的初始化。 2.2 同一个类中构造方法可以相互调用,调用语句必须是该构造方法的第一个执行语句。 Class Ordinary_phone extends Fixed_Telephone{ boolean longdistanceService; boolean internationalService; Ordinary_phone(){ } Ordinary_phone(boolean disService){ this(); longdistanceService=disService; } Ordinary_phone(boolean disService, boo
文档评论(0)