黑马程序员技术交流社区

标题: 代码纠错 [打印本页]

作者: 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
  1. interface A {
  2.         int x = 0;
  3. }

  4. class B {
  5.         int x = 1;
  6. }

  7. class C extends B implements A {
  8.         public void ccc() {
  9.             System.out.print(x);//这里x存在歧义,如果实在要获得输出,可以改成super.X,这样会输出父类B中的x值
  10.         }

  11.         public static void main(String args[]) {
  12.              new C().ccc(x);//这里不应该传值进去,因为C中的ccc方法是无参数的方法
  13.         }
  14. }
复制代码
代码里一共两个错

1是因为C类中的对象,从A和B都继承到了变量x,所以输出的时候,x存在歧义,编译会出错。

2是因为给无参数的方法传了值









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