黑马程序员技术交流社区
标题:
实例化
[打印本页]
作者:
史卜坤
时间:
2012-7-9 13:59
标题:
实例化
为什么this语句与super语句不能存在于同一构造函数中?
错误代码:
class Fu
{
Fu( )
{
System.out.println("fu run");
}
Fu(int x)
{
System.out.println("fu:"+x);
}
}
class Zi extends Fu
{
Zi( )
{
System.out.println("zi run");
}
Zi(int x)
{
this( );
super(7); //报错的位置。
System.out.println("zi:"+x);
}
}
class ExtendsDemo
{
public static void main(String[] args)
{
Zi z1=new Zi( );
Zi z2=new Zi(6);
}
}
作者:
曹恒业
时间:
2012-7-9 14:12
这是这几天第三次见到关于this()和super()的相关问题了。
简而言之,java中规定this()和super()必须出现在构造函数的第一行。所以,如果同时出现在同一个构造函数,必然不能满足java的这个规定。
这是我以前的回答,楼主可以参考,建议以后现在论坛里搜索。
http://bbs.itheima.com/forum.php ... mp;page=1#pid109232
作者:
全海波
时间:
2012-7-9 15:59
class Fu
{
Fu( )
{
System.out.println("fu run");
}
Fu(int x)
{
System.out.println("fu:"+x);
}
}
class Zi extends Fu
{
Zi( )
{
System.out.println("zi run");
}
Zi(int x)
{
this( );
super(7); //报错的位置。解释:因为this关键字只能放在构造函数的第一行,而super关键字跟this关键字的性质几乎差不多,所以super只能放在第一行,所以this与super是不能并存的,所以编译就会出错
System.out.println("zi:"+x);
}
}
class ExtendsDemo
{
public static void main(String[] args)
{
Zi z1=new Zi( );
Zi z2=new Zi(6);
}
}
复制代码
作者:
王宝康
时间:
2012-7-9 16:57
java中规定this()和super()必须出现在构造函数的第一行。只是单纯的规定吗?有没有什么实际意义呢?
作者:
山水游客
时间:
2012-7-9 17:07
我也是骗子
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2