2012-03-20 2 views
2

В Eclipse, в Android проекта, если я типа что-то вроде:Почему eclipse делает делегированные методы защищенными по умолчанию?

void onCreate(Bundle bundle) { 
    mButton.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 
      handleClick(); 
     }); 
}  

Eclipse, затем предлагает добавить handleClick() реализацию для меня дает мне два варианта: либо в OnClickListener или в ограждающих Activity.

Итак, если я скажу Eclipse реализовать handleClick() в действии, он делает это, и он делает handleClick() a protected метод.

Интересно, почему не private, в чем причина этого, почему он получает protected?

+0

Итак, вы можете переопределить его? –

+0

Это, должно быть, причина, по которой объясняется вам и Крису Томпсону, спасибо –

ответ

2

Ну, и это предположение, но метод делегата намного эффективнее, если он защищен. Будучи защищенным, подклассы могут переопределять его, предоставляя интерфейс для будущего расширения и т. Д. Посредством динамической отправки. Однако, если это личное, тогда все, что вы делаете, перемещает некоторый код. Вы могли бы также поместить содержание метода в тело onClick

+0

Это должно быть так. Теперь я вижу, спасибо. –

+0

Справедливости ради, «просто перемещение кода вокруг» называется «рефакторинг» и является веской причиной для перемещения кода. –

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