A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zhangx 中级黑马   /  2013-4-15 16:02  /  1456 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 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);
}
}

6 个回复

倒序浏览
ccc 函数是个空参数函数
回复 使用道具 举报
兄弟,你运行一下不是知道了吗!
回复 使用道具 举报
A中定义的有变量x,B中定义的也有变量x,当子类调用x时,不知道会调用哪一个,因此会发生错误
回复 使用道具 举报
2个错误。
第一个
public void ccc(){
System.out.print(x);
}   
这里是实现A接口,继承B类。jvm会不清楚到底是哪个x,编译过不去。
第二个
public static void main(String args[]){
new C().ccc(x);
}
你的函数没有带有参数。所以也会报错。

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
接口A和父类B中都有x,调用时出错,ccc函数定义时空参数,调用时传值x,编译时出错。
回复 使用道具 举报
  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是因为给无参数的方法传了值




评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马