小白请教关于java中接口的多实现问题

coldlyhan 2017-02-15 08:08:00
如果一个类实现了两个接口而这两个接口中有两个同名的变量为什么编译能通过?
例如:

class Demo1 implements A,B{
public void test(){
//System.out.println(this.num);
}
}

interface A{
int num = 2;
}

interface B{
int num = 3;
}
这里编译能通过为什么(输出会出错我能理解)

...全文
307 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
IT油条 2017-02-23
  • 打赏
  • 举报
回复
实现多个接口和接口有啥属性没关系吧、、
逗泥丸的平方 2017-02-23
  • 打赏
  • 举报
回复

public class Demo1 implements A, B {
    static int num = 4;

    static {
        System.out.println(A.num);
    }
    public static void main(String args[]) {
        System.out.println(B.num);
    }
}

interface A {
    int num = 2;
}

interface B {
    int num = 3;
}
很和谐啊.. 怎么都不会错嘛.
  • 打赏
  • 举报
回复
编译器只是对代码的语法进行检查,不能精确的对程序进行更加深入的检查。
七脉 2017-02-16
  • 打赏
  • 举报
回复
分开理解,JAVA虚拟机有编译期和运行期之分。
ryuugu_rena 2017-02-15
  • 打赏
  • 举报
回复
编译通过是没有语法错误,但并不代表没有运行时的错误呀

62,628

社区成员

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

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