public class A{
int x=20;
public int getX(){
return x;
}
public void setX(int x){
this.x=x;
}
}
public class B extends A{
int x=10;
public void setX(int x){
this.x=x;
}
public static void main(String[] args) {
B a=new B(); or A a= new B();
a.setX(30);
System.out.println(a.getX());/*it will always print parent class X*/
}
}
答案 0 :(得分:6)
B中没有getX()
方法。它总是会调用继承的方法。如果要模拟运行时多态性,则必须覆盖子类中的继承方法。
答案 1 :(得分:2)
为了获得子功能,你必须覆盖子类中的超类方法。
因此,代码更改为
public class B extends A{
int x=10;
public void setX(int x){
this.x=x;
}
@override
public int getX(){
return 6; // here you overridden that method return your new value here
}
public static void main(String[] args) {
B a=new B(); or A a= new B();
a.setX(30);
System.out.println(a.getX());/*new value prints*/
}
}