黑马程序员技术交流社区
标题:
谁来给化解一下this和super的矛盾
[打印本页]
作者:
韩伟
时间:
2012-7-16 18:26
标题:
谁来给化解一下this和super的矛盾
什么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);
//报错的位置。
/*super(7);
this();
*/ // 还是有错
System.out.println("zi:"+x);
}
}
class ExtendsDemo
{
public static void main(String[] args)
{
Zi z1=new Zi( );
Zi z2=new Zi(6);
}
} 错误提示:
未命名.jpg
(21.12 KB, 下载次数: 24)
下载附件
2012-7-16 18:26 上传
作者:
全海波
时间:
2012-7-16 18:32
Zi(int x)
{
this( );
super(7); //报错的位置。
/*super(7);
this();
*/ // 还是有错
解决方法:构造函数中是不允许this与super同时存在的,因为构造函数中this与super都必须放在第一行
System.out.println("zi:"+x);
}
作者:
李东升
时间:
2012-7-16 18:38
楼上说的很对了。没有规定this和super不能同时存在。但是this和super都要在构造 函数的第一行,那么,我们就只能把其中的一个放置在构造函数的第一行,舍弃另外一个了。
作者:
杨朔
时间:
2012-7-16 18:38
这个是重构方法,this是指向当前对象,但是super是指向父类文件,而且两者都要求放在第一个行,
这本身都是矛盾的,所以不行。
作者:
李勇
时间:
2012-7-16 20:27
我看了一下 你是用构造函数写的
类里只有一个构造函数,不可能有重名的
类是一座山 正所谓 一山不容二虎
而且 构造函数必须写在第一行 这点你注意到了
那不必多说什么了
构造函数默认的 ,父类或者本类的其他构造 你只能选一个
this 还是 super 楼主还是不太了解
这些都是基础 还有什么不会的 详细的看 CSND 我的博客
作者:
杨康
时间:
2012-7-16 20:33
因为this跟super都必须在方法体的第一行出现,两个都要在第一行出现,所以你的会报错。
作者:
封明川
时间:
2012-7-16 21:10
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都是必须放在第一行的,不管怎么样都不行的,这是java的格式
*/
this( );
super(7); //报错的位置。
/*super(7);
this();
*/ // 还是有错
System.out.println("zi:"+x);
}
}
class ExtendsDemo
{
public static void main(String[] args)
{
Zi z1=new Zi( );
Zi z2=new Zi(6);
}
}
作者:
黑马-王言龙
时间:
2012-7-16 21:12
哥们,这样说,构造函数只能调用一次,你里面放两个构造函数,当然报错
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2