如果类a继承类b,实现接口c,而类b和接口c中定义了同名变量,请问会出现什么问题?

linjy222 2007-10-28 10:25:13
java笔试的问题?
...全文
925 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
qianbiao 2007-10-29
  • 打赏
  • 举报
回复
顶。。。
oldabc 2007-10-29
  • 打赏
  • 举报
回复
顶.
jiangguanghe185 2007-10-28
  • 打赏
  • 举报
回复
如果在A类中要调用那个变量,可以在变量前写上他们的类名或接口名,就没问题了
lxzooz 2007-10-28
  • 打赏
  • 举报
回复
编译不能通过,Eclipse里提示"The field test.str is ambiguous",即调用该同名变量时,提示该变量不能明确。
oracs 2007-10-28
  • 打赏
  • 举报
回复
应该会有歧义
破Feel 2007-10-28
  • 打赏
  • 举报
回复
10楼这招不错
ybm 2007-10-28
  • 打赏
  • 举报
回复
public class a extends b implements c {

/**
* @param args
*/
public a()
{
super();
}
public static void main(String[] args) {
// TODO Auto-generated method stub
a t=new a();
System.out.print(((b)t).n);
System.out.print(((c)t).n);
}

}
class b
{
int n=0;
public b()
{
n=1;
}
}
interface c{
int n=0;
}

这样就不会有歧义了!类型转换
破Feel 2007-10-28
  • 打赏
  • 举报
回复
如果在A类或测试类中不调用这个同名变量,或者只调用B类中的这个同名变量(比如 new B().通明变量 ),或者B类中同名变量设为私有,那么可以通过编译。否则,编译不能通过,系统无法找到匹配的项,因为在A类中相当于有
两个重名变量。
破Feel 2007-10-28
  • 打赏
  • 举报
回复
什么叫歧义啊??
胡矣 2007-10-28
  • 打赏
  • 举报
回复
没问题啊 假如a,b,c中都有变量temp.
实例化对象的时候
1.a a = new a(); a.temp 是a本身的变量temp
2.b a = new a(); a.temp 是父类b的变量temp
3.c a = new a(); a.temp 是父接口c的变量temp
scyinhui 2007-10-28
  • 打赏
  • 举报
回复
要看你的变量的modifiers是什么样的了。
d2lorder 2007-10-28
  • 打赏
  • 举报
回复
应该会 ambigous 吧。。。。。。。。。
cursor_wang 2007-10-28
  • 打赏
  • 举报
回复
对于父类的变量,可以用super.同名变量名来明确,而接口的属性默认隐含为 public static final.所以可以通过C.同名变量名来明确。

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧