Почему невозможно создать класс, который расширяет OnTouchListener - PullRequest
2 голосов
/ 08 февраля 2012

Android SDK имеет интерфейс в TouchEvent. (android.view.View.OnTouchListener) Я не знаю, почему не получается следующая строка. (и Eclipse замечает ошибку на OnTouchListener)

public class TouchHandler extends OnTouchListener{

И это работает, если изменить на:

public interface TouchHandler extends OnTouchListener{

Это означает, что я не могу создать класс, который расширяет OnTouchListener. Может кто-нибудь объяснить, почему?

спасибо:)

Ответы [ 5 ]

7 голосов
/ 08 февраля 2012

вместо

public class TouchHandler extends OnTouchListener{

использовать инструменты

public class TouchHandler implements OnTouchListener{
3 голосов
/ 08 февраля 2012

Вы должны использовать TouchHandler, реализующий OnTouchListener.

Расширение интерфейса возможно только тогда, когда определение интерфейса (т. Е. Продление контракта), реализующее интерфейс, - это способ Java предоставить классу код для методов интерфейса.,(т.е. определение порядка обработки контракта)

1 голос
/ 08 февраля 2012

OnTouchListener является интерфейсом и поэтому должен быть реализован, а не расширен. Вы хотите реализовать OnTouchListener , сказав:

public class TouchHandler implements OnTouchListener{}
1 голос
/ 08 февраля 2012

Использование

public class TouchHandler implements OnTouchListener{   

Это способ игры Java с interface. Перейдите по этой ссылке , это поможет вам избавиться от путаницы.
Несколько моментов, чтобы очистить вас от замешательства
1. A class должен / может реализовать interface.
2. A interface может расширять другие interface.

0 голосов
/ 08 февраля 2012

только interface может расширять другие интерфейсы

public interface B {}
public interface C extends B {}

, если вы хотите использовать interface для своего класса, используйте implements

public class A implements C {}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...