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是父类中的还是接口中的
}
}
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是父类中的还是接口中的
}
}
System.out.println("num is " + a.num);接口中的属性是静态类变量,采用B.num方式访问;
父类中的属性是实例变量,采用a.num方式访问。
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类
这样就可以区别是接口中的变量还是超类中的变量
System.out.println("num is"+super.num);
public static void main(String[] args){
System.out.println("B num is "+B.num);//访问接口B的变量
System.out.println("A num is "+super.num);//访问父类A的变量
}
}
不能有变量 只能常量!
上面写错了,应该是:
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的变量
}
}
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中多态的一个组成部分。