快速业务通道

Java语言入门教程(十三):Java语言中继承中的构造方法问题 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16

Java语言入门教程(十三):Java语言中继承中的构造方法问题

时间:2011-06-13 csdn博客 taomoon719

教程(十一)中,了解了Java语言中继承的基本概念。Java中类与类的继承 ,是单继承,主要目的是复用。子类对象可以复用父类中权限允许的属性和方法 ,所以子类的构造方法和父类的构造方法之间,有一定的调用关系,本文中将进 行详细介绍。

首先,需要记住一个事实:子类的任何一个构造方法,都将先调用父类某个 构造方法。如子类Trainer中的构造方法:

public Trainer() { }

虽然这个构造方法的方法体中什么代码也没有写,但是也调用了父类 Employee的构造方法,默认调用的是Employee中无参的构造方法:

public Employee() { }

至于为什么默认调用的是无参构造方法,后面会有讲解。

也就是说,任何一个子类的任何一个构造方法,都必定会调用父类的某个构 造方法,但是到底会调用到哪个构造方法,取决于子类构造方法的写法。如果子 类构造方法的第一条语句不是super语句,那么就默认调用父类无参的构造方法 ,如上面展示的代码。如果Trainer类中有如下构造方法:

public Trainer(String name, double salary, String course) { this.course = course; }

这个构造方法也是先调用的Employee的无参构造方法,因为第一条语句不是 super语句。但是,这个构造方法,显然是为了初始化name,salary,course,其中 name和salary的初始化可以调用Employee中的这个构造方法进行:

public Employee(String name, double salary) { this.name = name; this.salary = salary; }

如何才能在Trainer的构造方法中,指定先调用Employee的某个构造方法,而 不是默认调用无参的哪?使用super即可。

注意,super语句必须放在第一条语句。

public Trainer(String name, double salary, String course) { super (name, salary); this.course = course; }

总结一下,在继承中,有关构造方法,有如下几点需注意:

1、子类的任何构造方法,都会调用父类的某个构造方法。

2、如果子类的构造方法第一条语句不是super语句,那么就调用父类的无参 的构造方法,与第一条语句写super()同样的效果。因此,父类中,最好保留一 个无参的构造方法。

3、在子类构造方法的第一条语句,可以通过写super语句,可以指定任何一 个需要调用的构造方法,主要通过参数个数和类型区别。了解这些知识点后,初 学者对于继承中的构造方法应该比较清楚,在接下来的教程中,将逐步了解继承 中的覆盖、多态等其他概念。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号