为什么java this super和super不能同时出现在一个构造函数里面

博客访问: 12894
博文数量: 38
注册时间:
ITPUB论坛APP
ITPUB论坛APP
APP发帖 享双倍积分
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: Java技术
System.out.println("You call super class non-args constructor!");
class B extends A { &&
&&&&&System.out.println("You call subclass constructor!");
B(String n)
&&&&super();&
&&&&this();
结论 也就是说你必须在构造器的第一行放置super或者this构造器,否则编译器会自动地放一个空参数的super构造器的,其他的构造器也可以调用super或者this,调用成一个递归构造链,最后的结果是父类的构造器(可能有多级父类构造器)始终在子类的构造器之前执行,递归的调用父类构造器。无法执行当前的类的构造器。也就不能实例化任何对象,这个类就成为一个无为类。&
从另外一面说,子类是从父类继承而来,继承了父类的属性和方法,如果在子类中先不完成父类的成员的初始化,则子类无法使用,应为在java中不允许调用没初始化的成员。在构造器中是顺序执行的,也就是说必须在第一行进行父类的初始化。而super能直接完成这个功能。This()通过调用本类中的其他构造器也能完成这个功能。&
因此,this()或者super()必须放在第一行。
阅读(14) | 评论(0) | 转发(0) |
相关热门文章
学习Timer类,定制自己的调度...
给主人留下些什么吧!~~
请登录后评论。本帖子已过去太久远了,不再提供回复功能。鍙?渶涓}

我要回帖

更多关于 java this super 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信