java中关于继承的问题。初学者问题,谢谢帮忙

来源:百度知道 编辑:UC知道 时间:2024/05/31 06:07:57
class ar
{
public int a;
public void setA(int a)
{
this.a=a;
}
public int getA()
{
return this.a;
}
}
class br extends ar
{
public void setA(int a)
{
this.a=a*5;
}
public void call()
{
this.setA(5);
}
public void sub()
{
super.setA(6);
}
}
public class cr
{
public static void main(String[] args)
{
br obj=new br();
obj.call();
System.out.println(obj.getA());
obj.sub();
System.out.println(obj.getA());
}
}
以上代码运行结果为25和5
我想问br继承ar后,getA()方法也会被继承,为什么调用过call()方法后在调用getA()方法系统会调用子类继承getA()的方法,而调用sub()方法后,再调用getA()方法系统就会调用父类的getA()方法,是不是系统会自动识别call()方法和sub()方法中分别调用的子类与父类的setA(int a)方法,从而系统自己去选择调用了应用的getA()方法?还是有别的原因,请赐教。

25,5?
看不懂了应该时25,6吧

总之,子类extends父类以后创建了子类的对象
那么父类有的子类都有了,如果方法&父类一样,那么就覆盖了父类的方法,你的程序很简单
1创建了个cr的对象
2调用的子类call方法,然后call方法调用了br的setA方法,a = 25
3.调用br的get方法,但是br没有get方法,jvm就自动调用了ar的get方法输出
4.调用br的sub,sub调用了父类的set方法,将a赋值为了6,输出自然也是6

调用是有顺序的。回去看书吧。书上有介绍。