Переопределение методов Android - PullRequest
6 голосов
/ 31 июля 2011

Когда мы переопределяем метод в подклассе, мы вызываем метод суперкласса в этом методе, например:

protected void onSizeChanged(int w, int h, int oldw, int oldh) {
    width = w ;
    height = h ;

    Log.d(TAG, "onSizeChanged: width " + width + ", height "+ height);

    super.onSizeChanged(w, h, oldw, oldh);
}

Так зачем нам звонить super.onSizeChanged()?

Я удаляю строку super.onSizeChanged(), и результат такой же, как и у нее.

Или то же самое в методе onCreate, мы вызываем super.onCreate().

Ответы [ 4 ]

2 голосов
/ 31 июля 2011

В объектно-ориентированном программировании пользователи могут наследовать свойства и поведение суперкласса в подклассах. Подкласс может переопределять методы своего суперкласса, заменяя собственную реализацию метода реализацией суперкласса.

Иногда метод переопределения полностью заменяет соответствующую функциональность в суперклассе, в то время как в других случаях метод суперкласса все равно должен вызываться из метода переопределения. Поэтому для большинства языков программирования требуется, чтобы переопределенный метод явно вызывал переопределенный метод в суперклассе для его выполнения.

1 голос
/ 31 июля 2011

Существуют определенные методы, которые делают важные вещи, такие как методы onCreate и onPause.Если вы переопределите их, не вызвав супер-метод, этого не произойдет, и действие не будет работать должным образом.В других случаях (обычно при реализации интерфейса) нет реализации, которую вы переопределяете, только объявление, и поэтому нет необходимости вызывать метод super.

Еще одна вещь, иногда вы переопределяете метод и вашиЦель состоит в том, чтобы изменить поведение исходного метода, а не расширять его.В этих случаях не следует вызывать супер-метод.Примером этого является метод рисования компонентов качания.

1 голос
/ 31 июля 2011

Для какого-то метода вы должны вызвать супер-метод для инициации какого-либо объекта или переменной (в противном случае вы получите исключение супер-вызова), для других вы можете вызвать его, но заметьте, что есть.

0 голосов
/ 01 августа 2011

Существует множество вещей, которые API-интерфейс Android будет делать в onCreate (или любом другом on_ _ ___ ) вашего класса Activity.

Теперь, когда вы переопределяете метод, ваша реализация будет использоваться вместо реализации в классе действия во время выполнения действия, поскольку для этого предназначено переопределение.Он переопределяет реализацию родителя (т. Е. Класса Activity) и заменяет ее реализацией дочернего (т. Е. Вашего класса).

Таким образом, Android применяет это правило, поэтому вам всегда нужно вызывать реализацию родителя в дополнение к вашей собственной реализации.так что реализация родителя (которая содержит много важных вещей) остается неповрежденной в дополнение к вашей реализации.

Я надеюсь, что это достаточно тщательно продумано и ясно.

...