覆盖方法规则

时间:2011-04-12 21:11:54

标签: blackberry java-me

班级LabelField有一个方法 -

public void setPadding(int, int, int, int);

如果我像这样创建一个扩展LabelField覆盖setPadding的类 -

public class CustomPadding extends LabelField {

    public void setPadding(int, int, int, int){
      super.setpadding(5,5,5,5);
    }
}

每次创建CustomPadding的实例都不应该调用我的自定义setPadding方法吗?

目前不是,我不确定为什么?

2 个答案:

答案 0 :(得分:3)

为什么会自动调用setPadding方法?它不会被自动调用 - 显式地必须实际调用它。你是否有理由相信LabelField的构造函数链中的某些东西会调用它?

如果你试图使customPadding(应该在PascalCase中命名,btw)总是以特定的方式设置它的填充,你应该从构造函数中调用它。

答案 1 :(得分:1)

  

不应该调用我的自定义setPadding方法吗?

如果首先没有调用原始setPadding,则不行。

即,答案是肯定的,如果customPadding.setPaddingLabelField.setPadding,则只要LabelField被调用就应该调用LabelField.setPadding。 (但如果customPadding.setPadding 未被调用,则customPadding也不应该。{/ p>

您应该提供更多代码。 (例如,假设您在{{1}}中确实有参数名称。)