【发布时间】:2015-04-04 03:50:55
【问题描述】:
我有四个类对象、两个处理程序类、一个基表单类和一个派生表单类。
处理程序类包含 Start 方法:
public void Start(int BodyFontSize)
{
pForm = new TT_FORM(pParent
,false
,BodyFontSize
);
ShowForm();
}
这会调用基本表单构造函数:
public TT_FORM(clsHCI Parent
,boolean Blocking
,int FontSize
)
{
super(new javax.swing.JFrame()
,Blocking
);
System.out.println("TT_FORM constructor");
m_pParent = Parent;
createFormItems();
sizeForm(FontSize);
...
...
}
方法 createFormItems 和 sizeForm 被定义并打印入口语句。
调用处理程序 Start 方法会产生预期的输出:
TT_FORM 构造函数
TT_FORM createFormItems
TT_FORM sizeForm
我现在介绍第二个处理程序类的方法:
public void Start(int BodyFontSize)
{
pForm = new TT_START(pParent
,BodyFontSize
);
ShowForm();
}
这会调用派生形式的构造函数:
public class TT_START extends TT_FORM
implements ActionListener
{
private static final long serialVersionUID = 1L;
private clsHCI m_pParent;
public TT_START(clsHCI Parent
,int FontSize
)
{
super(Parent, true, FontSize);
System.out.println("TT_START constructor");
m_pParent = Parent;
createFormItems();
sizeForm(FontSize);
}
其中方法 createFormItems 和 sizeForm 在派生类和打印条目语句中定义。
调用此处理程序的 Start 方法会产生输出:
TT_FORM 构造函数
TT_FORM createFormItems
TT_START sizeForm
我期待的输出是:
TT_FORM 构造函数
TT_FORM createFormItems
TT_FORM sizeForm
TT_START 构造函数
TT_START 创建表单项
TT_START sizeForm
谁能解释为什么这个调用顺序与我的预期不同? 我需要进行哪些更改才能获得所需的调用序列?
【问题讨论】:
-
如果您能提供一个简短但完整的程序来演示该问题,那将非常有帮助 - 最好也遵循正常的 Java 命名约定...
-
你应该通过super keyword显式调用父类方法
标签: java inheritance constructor