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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 .Mr 于 2013-12-1 10:21 编辑
  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 pX(){        
  9. System.out.println(x);  
  10.   }     
  11. public static void main(String[] args) {      
  12. new C().pX();            //编译报错 提示public的问题
  13. }
  14. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

8 个回复

倒序浏览
本帖最后由 25343215 于 2013-11-30 22:07 编辑

如果这样写Sysout(super.x)那么输出的1。
如果这样写Sysout(this.x)那么还将继续报图中的错误 。
在我这里报的错误原因是接口,和父类,都有相同的变量。



图片1.png (10.12 KB, 下载次数: 3)

图片1.png

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

回复 使用道具 举报
很显然,main类必须public 啊!
回复 使用道具 举报
是调用方法时的问题,这样调用,虚拟机是打印哪个的x值呢?
不明确,所以就报错了。
回复 使用道具 举报
我显示的怎么是x错误啊。。。
父类和接口中都有x,调用的不确定性吧。
回复 使用道具 举报
接口中的成员都是常量,也就是说,
interface A
{
  public static final int x =0;
}

Class B 中的x和常量名重复了。

调用两个x的方法如下:
第一个,接口中的常量。A.x
第二个,父类中的变量。super.x

不用谢我,因为我叫雷锋。

回复 使用道具 举报
.Mr 中级黑马 2013-12-1 10:07:14
7#
25343215 发表于 2013-11-30 22:01
如果这样写Sysout(super.x)那么输出的1。
如果这样写Sysout(this.x)那么还将继续报图中的错误 。
在我这 ...

谢谢 我明白了..
回复 使用道具 举报
.Mr 中级黑马 2013-12-1 10:08:44
8#
litaojisuanji 发表于 2013-11-30 23:03
我显示的怎么是x错误啊。。。
父类和接口中都有x,调用的不确定性吧。

3q I get it
回复 使用道具 举报
.Mr 中级黑马 2013-12-1 10:10:58
9#
hurryup 发表于 2013-11-30 22:17
很显然,main类必须public 啊!

我以为C类需要Public 因为主函数是Public 嘛
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马