Переопределение правил метода - PullRequest
1 голос
/ 13 апреля 2011

У класса 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 ]

3 голосов
/ 13 апреля 2011

Почему что-то автоматически вызывает метод setPadding? Он не будет вызываться автоматически - что-то должно действительно вызывать , явно. Есть ли у вас основания полагать, что что-то в цепочке конструкторов для LabelField вызывает это?

Если вы пытаетесь заставить customPadding (который должен быть назван в PascalCase, кстати) всегда задавать его заполнение определенным образом, вы должны вызвать его из конструктора.

1 голос
/ 13 апреля 2011

не должен ли быть вызван мой метод setPadding?

Нет, если исходный setPadding не был вызван в первую очередь.

Т.е. ответ: да, customPadding.setPadding следует вызывать всякий раз, когда LabelField.setPadding был бы вызван, если бы это был LabelField.(Но если бы LabelField.setPadding не было бы названо , то не следует customPadding.setPadding.)

Вы должны предоставить немного больше кода.(Я, например, предполагаю, что у вас есть имена для ваших параметров в customPadding.)

...