2013-06-14 4 views
0

Я искал начальную версию Android-игр 2nd Edition и наткнулся на какой-то код, который я не понимаю. В листинге 3-1 есть интерфейс определяется какИнтерфейсы с Android

залежи
public interface Input 
    { 
    public static class KeyEvent 
    { 
     public static final int KEY_DOWN = 0; 
     public static final int KEY_UP = 1; 
     public int type; 
     public int keyCode; 
     public char keyChar; 
    } 
    public static class TouchEvent 
    { 
     public static final int TOUCH_DOWN = 0; 
     public static final int TOUCH_UP = 1; 
     public static final int TOUCH_DRAGGED = 2; 
     public int type; 
     public int x, y; 
     public int pointer; 
    } 
    public boolean isKeyPressed(int keyCode); 
    public boolean isTouchDown(int pointer); 
    public int getTouchX(int pointer); 
    public int getTouchY(int pointer); 
    public float getAccelX(); 
    public float getAccelY(); 
    public float getAccelZ(); 
    public List<KeyEvent> getKeyEvents(); 
    public List<TouchEvent> getTouchEvents(); 
    } 

То, что я не понимаю, что я думал, что Java не позволяет интерфейсам иметь поля. Разве это отличается от того, что Android запускает Java?

+1

Поля не находятся непосредственно в интерфейсе; они находятся в вложенных статических классах внутри интерфейса. Интерфейсы допускают вложенные статические классы, а классы - поля. –

ответ

0

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

0

Эмпирическое правило для интерфейса в Java:

  1. должны включать в себя только абстрактные методы и конечные поля
  2. не может быть использован в качестве базового класса

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

+0

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

+0

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

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