Java程序案例教程(主编田智、杨艳慈 西安科大版)课件:第6章 类的继承01.pptVIP

Java程序案例教程(主编田智、杨艳慈 西安科大版)课件:第6章 类的继承01.ppt

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第6章 类的继承 6.1 继承的基本概念   现在假设有一个Person类,其中有name与age两个属性,而另外一个Student类,需要有name、age、school三个属性,如图6-1所示。从图6-1中可以看出,Person中已经存在有name和age两个属性,所以不希望在Student类中再重新声明这两个属性,这时就需要考虑将Person类中的内容继续保留到Student类中。这就引出了类的继承的概念。 图6-1 Student类与Person类   此处希望Student类能够将Person类的内容继承下来后继续使用,如图6-2所示。 图 6-2 Person 与 Student的继承关系   程序说明:   (1) 第1~5行声明一个名为Person的类,其中有name与age两个属性。   (2) 第6~9行声明一个名为Student的类,并继承自Person类。   (3) 第14行声明并实例化一个Student类的对象。   (4) 第16、18、20行分别用Student类的对象调用程序中的name、age、school属性。   由上面的程序可以看出,在Student类中虽然并未定义name与age属性,但在程序外部依然可以调用name或age,这是因为Student类直接继承自Person类。也就是说,Student 类直接继承了Person类中的属性,所以Student类的对象才可以访问到父类中的成员,如图6-3所示。 图6-3 Person与Student类的继承图   在Java中只允许单继承,而不允许多重继承。也就是说,一个子类只能有一个父类,但是Java中却允许多层继承。   多重继承示意图如图6-4所示。多重继承语法如下:   由上面程序可以看出,类C同时继承了类A与类B,也就是说,类C同时继承了两个父类,这在Java中是不允许的。 图6-4 多重继承 图6-5 多层继承示意图 6.1.1 子类对象的实例化过程   既然子类可以继承直接父类中的方法与属性,那父类中的构造方法呢?   【例6-2】 TestPersonStudentDemo1.java。   (2) 第11~19行声明一个Student类,此类继承自Person类,此类中也有一个无参构造方法。   (3) 第24行声明并实例化一个Student类的对象s。   从程序的输出结果可以看出,虽然程序第24行实例化的是子类的对象,但是程序先去调用父类中的无参构造方法,之后再调用子类本身的构造方法。所以由此可以得出结论,子类对象在实例化时会默认先去调用父类中的无参构造方法,之后再调用本类中的相应构造方法。实际上在本例中,在子类构造方法的第一行默认隐含了一个“super()”语句,上面的程序改写成下面的形式也是可以的:   在子类继承父类的时候经常会有下面的问题产生,例如:   【例6-3】 TestPersonStudentDemo2.java。   由编译结果可以发现,系统提供的出错信息是因为无法找到Person类,所以造成了编译错误,这是为什么呢?读者可以发现,在类Person中提供了一个有两个参数的构造方法,而并没有明确写出无参构造方法。在本书前面已提到过,如果程序中指定了构造方法,则默认构造方法不会再生成,本例即是如此。由于第24行实例化子类对象时找不到父类中的无参构造方法,所以程序出现了错误,而只要在Person类中增加一个什么都不做的构造方法,这一问题就可以解决了。   【例6-4】 TestPersonStudentDemo3.java。 6.1 继承的基本概念 6.2 抽象类 6.3 Object类 6.4 final关键字 6.5 接口(interface) 6.6 对象的多态性 6.7 匿名内部类   程序说明:   (1) 第1~10行声明一个Person类,此类中有一无参构造方法。

文档评论(0)

小教资源库 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档