}
class B{
int x =100;
}
class C extends B implements A {
public void pX(){
System.out.println(x); //这样写编译器识别不了会报错 我想问怎么在这里输出 10 和 100
}
public static void main(String[] args) {
new C().pX();
}
}
...全文
1591打赏收藏
关于java继承与实现抽象类和接口的变量问题
interface A{ int x = 10; } class B{ int x =100; } class C extends B implements A { public void pX(){ System.out.println(x); //这样写编译器识别不了会报错 我想问怎么在这里输出 10 和 100 } public static void main(String[] args) { new C().pX(); } }
因为在接口中的全局变量默认都是
public static final ;
就算你在接口中写了int x=10;
实际上定义的还是public static final int x=10;
因为有final关键字,所以变量x的值是不可以被修改的。
但是你继承了类B,也继承了一个x变量,且值与接口红定义的不同,所以就会报错。
修改错误的方法就是:将其中一个变量x改成任何其他字母。
否则你再程序中使用x变量时,程序根本不知道你要使用的是接口的x变量还是继承的类的x变量