任何人都可以澄清我.这里实例方法被覆盖但变量不被覆盖.
输出为:B 10
class A{
int i=10;
public void name(){
System.out.println("A");
}
}
class B extends A{
int i=20;
public void name(){
System.out.println("B");
}
}
public class HelloWorld {
public static void main(String[] args){
A a = new B();
a.name();
System.out.println(a.i);
}
}
解决方法:
你不能覆盖属性,你只能覆盖方法:
public class A{
private int i=10;
public void name(){
System.out.println("A");
}
public int getI(){
return i;
}
}
public class B extends A{
private int i=20;
public void name(){
System.out.println("B");
}
@Override
public int getI(){
return i;
}
}
public class HelloWorld {
public static void main(String[] args){
A a = new B();
a.name();
System.out.println(a.getI());
}
}
在您的示例中,将变量a定义为类型A,以便忽略B中的i值.
标签:java,variables,instance,inheritance
来源: https://codeday.me/bug/20190823/1698918.html