Просто дополнительный комментарий к "Etaoin", когда у вас есть время и если вы серьезно относитесь к хорошему OO, выполните поиск по отношениям "is-a" и "has-a" в OO.
Если отношение «есть» является верным («яблоко» является «фруктом»), то вполне допустимо использовать implements
в классе, в противном случае, если оно имеет отношение «имеет» (автомобиль) has-a "колесо, но автомобиль" is-not-a "wheel), тогда implements
НЕ подходит - вам нужно использовать состав , другими словами переменную-член класса.
Можете ли вы сказать в своем коде, что Breakout
класс "is-a" MouseMotionListener
? Ответ "нет", кстати! Breakout
"is-a" игра или приложение, но MOuseMotionListener является частью реализации .
Как сказал "Etaoin", вы должны реализовать MouseMotionListener как внутренний класс, хотя я предпочитаю закрытые внутренние классы, а не анонимные классы (чтобы конструктор был коротким и конкретным, среди прочих причин).
Когда вы «получаете» ОО, оно великое и очень мощное, но требует реальных усилий, чтобы «сместить парадигму» из процедурного мышления.