黑马程序员技术交流社区
标题:
代码纠错
[打印本页]
作者:
zhangx
时间:
2013-4-15 16:02
标题:
代码纠错
本帖最后由 zhangx 于 2013-4-16 14:47 编辑
想问一下以下代码错在哪里?
interface A{
int x=0;
}
class B{
int x=1;
}
class C extends B implements A{
public void ccc(){
System.out.print(x);
}
public static void main(String args[]){
new C().ccc(x);
}
}
作者:
刘胜寒
时间:
2013-4-15 16:15
ccc 函数是个空参数函数
作者:
黑马_位志国
时间:
2013-4-15 16:18
A中定义的有变量x,B中定义的也有变量x,当子类调用x时,不知道会调用哪一个,因此会发生错误
作者:
殇_心。
时间:
2013-4-15 16:28
2个错误。
第一个
public void ccc(){
System.out.print(x);
}
这里是实现A接口,继承B类。jvm会不清楚到底是哪个x,编译过不去。
第二个
public static void main(String args[]){
new C().ccc(x);
}
你的函数没有带有参数。所以也会报错。
作者:
赵海洋
时间:
2013-4-15 18:37
接口A和父类B中都有x,调用时出错,ccc函数定义时空参数,调用时传值x,编译时出错。
作者:
PANZERLEADER
时间:
2013-4-15 23:02
interface A {
int x = 0;
}
class B {
int x = 1;
}
class C extends B implements A {
public void ccc() {
System.out.print(x);//这里x存在歧义,如果实在要获得输出,可以改成super.X,这样会输出父类B中的x值
}
public static void main(String args[]) {
new C().ccc(x);//这里不应该传值进去,因为C中的ccc方法是无参数的方法
}
}
复制代码
代码里一共两个错
1是因为C类中的对象,从A和B都继承到了变量x,所以输出的时候,x存在歧义,编译会出错。
2是因为给无参数的方法传了值
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2