2011-04-27 3 views
10

друзья,Что такое использование Android Super Class?

какой-нибудь руководство мне, что является целью класса Super в android, который я видел во многих методов @Override. например

@Override 
     protected void onProgressUpdate(final Object... args) 
     { super.onProgressUpdate(args); 
} 

@Override 
     protected void onPostExecute(Boolean result) { 
      super.onPostExecute(result); 
} 

@Override  
     protected void onPreExecute() { 
      super.onPreExecute(); 
} 

любая помощь будет принята с благодарностью.

+2

Если ваши методы переопределения выглядят так, вы не должны их переопределять. Только переопределять, когда вам нужно изменить или добавить функциональность в метод. – unholysampler

+0

Посмотрите на ответ Рагхава Суда и комментарий к нему. (http://stackoverflow.com/a/14671985/1808829) Он объяснил очень четко. –

ответ

7

Using the Keyword super

Вкратце: если вы переопределить некоторый метод (onProgressUpdate, ..) в своем классе, но хотите использовать оригинальный один из родительского класса вы используете супер ключевое слово.

Я рекомендую использовать супер как в примере, чтобы предотвратить разрыв логики родительского класса.

+2

Но я вижу, что люди используют его без @override. Какова важность супер с переопределением или без него? –

1

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

+5

Wow ... Способ сделать это намного сложнее, чем это действительно не отвечает на вопрос. – Klaus

3

Суперкласс класса - это класс, из которого был расширен класс, или null, если он не был расширен.

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

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

Смежные вопросы