Разве
ball.draw(canvas)
не вызывает метод draw()?