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*/
}
}
问问题
78 次
2 回答
6
B中没有getX()
方法。它总是会调用继承的方法。如果要模拟运行时多态性,则必须重写子类中继承的方法。
于 2013-06-14T09:53:19.583 回答
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*/
}
}
于 2013-06-14T09:56:50.077 回答