package testother;public class SubDynamicStatus extends DynamicStatus
{ public SubDynamicStatus()
{
System.out.println("执行子类构造方法");
add();
}
public static void main(String[] args)
{
new SubDynamicStatus();
}
public void add()
{
System.out.println("执行子类Add()方法");
System.out.println("SubDynamicStatus.add()");
}
}
class DynamicStatus
{
public DynamicStatus()
{
System.out.println("执行父类构造方法");
add();
}
public void add()
{
System.out.println("执行父类Add()方法");
System.out.println("DynamicStatus.add()");
}
}为什么会有这样的执行顺序???DynamicStatus.add() 输出了两次 请高手赐教,谢了···
解决方案 »
- 我吐 - 对提问者的不负责任,误导他人
- 关于Object的问题
- java 基础问题,关于TreeSet...
- jdk目前最新的好像是1.6.这个环境如何配置?
- Swing文字输入组件 与 智能ABC输入法 不兼容的问题
- 请问java中有没有播放flash的控件之类的啊!~ 我想在JFame中播放flash动画!~ 请问怎么搞?
- 这是什么风格的Java界面?
- 各位老大,在java画板里放大图片怎么让它不失真??
- 不知为何错误!输入字符传入setBackground(Color.white)设定颜色。帮忙!帮忙!
- 不知是哪里设错了,急!
- 加减乘除 改成JAVA代码
- discuz6.0的验证码识别有人做过吗
其实子类的构造方法是这样的
public SubDynamicStatus()
{
System.out.println("执行父类构造方法");
this.add();
System.out.println("执行子类构造方法");
this.add();
}
你的add()方法已经覆盖了,实现了多态。而且你new的是SubDynamicStatus的对象,根据动态绑定,你调用的方法应该是你所构造对象拥有的实际方法(就是你在子类中所覆盖的那个方法),而不再是你父类的那个add()了。在你调用父类构造函数的时候并没有构造其对象。所以并不会调用父类中的 add()方法。