Java类实现了一个接口,继承了一个类,如何访问接口与父类中相同的变量,代码如下:class A{int num=10;} //定义父类
interface B {int num=1;} //定义接口
//子类实现了接口并继承了父类
public class C extends A implements B{
public static void main(String[] args){
System.out.println("num is "+num); //这一行报错,不知道访问的num是父类中的还是接口中的
}
}

解决方案 »

  1.   

            System.out.println("num is "+  B.num);        A a = new C();
            System.out.println("num is " + a.num);接口中的属性是静态类变量,采用B.num方式访问;
    父类中的属性是实例变量,采用a.num方式访问。
      

  2.   

    这是一个Java多元继承的例子,C类即是A类,也是B类
         C c = new C();      //建立一个C类,而不是A类
         ((A)c).num = 7;
            System.out.println("num is "+ ((A)c).num);  //动态换化为A类(如果建立的是A类,A c = new C();可用1楼的方法c.num直接防问
            System.out.println("num is "+ ((B)c).num)); //动态换化为B类
      

  3.   

    调用超类中的变量用SUPER
    这样就可以区别是接口中的变量还是超类中的变量
      

  4.   

    System.out.println("num is "+  B.num); 
    System.out.println("num is"+super.num);
      

  5.   

    public class C extends A implements B{
        public static void main(String[] args){
            System.out.println("B num is "+B.num);//访问接口B的变量
            System.out.println("A num is "+super.num);//访问父类A的变量 
        }
    }
      

  6.   

    interface B {int num=1;} //定义接口
    不能有变量 只能常量!
      

  7.   


    上面写错了,应该是:
    public static void main(String[] args){
    System.out.println("B num is "+B.num);//访问接口B的变量
    A a = new A();
    System.out.println("A num is "+a.num);//访问父类A的变量
    }
    }
      

  8.   

    interface里申明的变量是final static型,你的问题上面解答。但是现在我想问下如果接口中和父类同时有同一种方法了 ,发现这个时候子类就不用去实现接口里的方法了,因为他从父类已经继承了,然后在子类中调用这个方法,显然是调用父类的。
      

  9.   

    谢谢楼上各位的回帖,现在自己将这一问题作一总结:class A{int num=10;}
    interface B {int num=1;}
    public class C extends A implements B{
    public static void main(String[] args){
    //System.out.println("num is "+A.num);
    C c=new C();
    B b=c;
    System.out.println("B's num:"+b.num); //调用B中的num
    A a=c;
    System.out.println("A's num:"+a.num); //调用A中的num
    }
    }
    这应该是Java中多态的一个组成部分。