黑马程序员技术交流社区

标题: 有关子类实例化过程的疑惑 [打印本页]

作者: 李东城    时间: 2013-2-13 13:38
标题: 有关子类实例化过程的疑惑
为什么this语句与super语句不能存在于同一构造函数中?

错误代码:
  1. class Fu
  2. {
  3.         Fu( )
  4.         {
  5.                 System.out.println("fu run");
  6.         }
  7.         Fu(int x)
  8.         {
  9.                 System.out.println("fu:"+x);
  10.         }
  11. }

  12. class Zi extends Fu
  13. {
  14.         Zi( )
  15.         {
  16.                 System.out.println("zi run");
  17.         }
  18.         Zi(int x)
  19.         {
  20.                 this( );
  21.                 super(7);  //报错的位置。
  22.                 System.out.println("zi:"+x);
  23.         }
  24. }

  25. class ExtendsDemo
  26. {
  27.         public static void main(String[] args)
  28.         {
  29.                 Zi z1=new Zi( );
  30.                 Zi z2=new Zi(6);
  31.         }
  32. }
复制代码

作者: 许鑫星    时间: 2013-2-13 14:02
因为在构造子类时,会自动的调用父类对应的构造函数,你在调用this的时候其实已经调用了super(),再调用一个super(6)就不行了。
作者: 朱玉玺    时间: 2013-2-13 16:00
楼上正解
作者: 史政法    时间: 2013-2-13 16:24
super语句只能写在构造函数的第一行。
作者: 刘卡    时间: 2013-2-18 21:40
一样的观点"super语句只能写在构造函数的第一行。"
作者: 0.00    时间: 2013-3-13 10:45
this 与super的权限相同,不能同时存在,因为他们不能有先后执行的关系,只能存在一个




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2