黑马程序员技术交流社区

标题: 实现多接口的问题 [打印本页]

作者: 王晓东    时间: 2012-6-5 15:11
标题: 实现多接口的问题
  1. interface Interface1 {
  2.         public String name = "interface1";
  3. }
  4. interface Interface2 {
  5.         public String name = "interface2";
  6. }
  7. class Impl implements Interface1, Interface2 {

  8. }

  9. @Test
  10. public void test03(){
  11.         Impl impl = new Impl();
  12.         System.out.println(impl.name);  //<font color="red">编译出错,为什么?</font>
  13. }
复制代码
还有,如果上面的代码可以通过编译的话,那么访问的是Interface1中的name字段呢还是访问的是Interface2中的name字段呢?
求解

作者: 张少威    时间: 2012-6-5 15:12
首先告诉楼主两点:
1. 接口中的字段,即使你不加任何修饰符,它也是public static final的
2. 接口中的方法,即使你不加任何修饰符,它也是public abstract的

楼主的写法,我看着真是别扭呀。你想访问哪个接口中的字段就直接用接口调用呀。
比如Interface1.name就是访问Interface1中的name字段,同样Interface2.name就是
访问Interface2中的name字段。

希望对楼主有用。
作者: 丰亚彬    时间: 2012-6-5 15:14
呃,你问的问题本身就矛盾。。。要是能编译通过访问的是哪一个name,它就不能编译通过,因为他们两个就不可能同时存在。。。。
作者: 包晗    时间: 2012-6-5 15:25
楼主的意思是建立对象后看输出哪一个  是吗?
你的代码通不过啊

个人理解接口都是抽象的
需要类来实现.
作者: 何拴绪    时间: 2012-6-5 17:53
这个问题类似一个类实现了两个接口中的同名但返回值不同的方法,这种情况就很少,在编程时要尽量避免,所以多个接口中的字段和方法不要重名。




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