Kotlin: How to override a class, then pass it to a function as an anonymous function argument

```kotlin

val commonDestureDetector = GestureDetector(this, object : GestureDetector.OnGestureListener {
// 1. 用户轻触触摸屏
override fun onDown(e: MotionEvent): Boolean {
Log.i("MyGesture", "onDown")
return false
}

// 2. 用户轻触触摸屏,尚未松开或拖动
// 与onDown()的区别:无松开 / 拖动
// 即:当用户点击的时,onDown()就会执行,在按下的瞬间没有松开 / 拖动时onShowPress就会执行
override fun onShowPress(e: MotionEvent) {
Log.i("MyGesture", "onShowPress")
}

// 3. 用户长按触摸屏
override fun onLongPress(e: MotionEvent) {
Log.i("MyGesture", "onLongPress")
}

// 4. 用户轻击屏幕后抬起
override fun onSingleTapUp(e: MotionEvent): Boolean {
Log.i("MyGesture", "onSingleTapUp")
return true
}

// 5. 用户按下触摸屏 & 拖动
override fun onScroll(
e1: MotionEvent, e2: MotionEvent,
distanceX: Float, distanceY: Float
): Boolean {
Log.i("MyGesture", "onScroll:")
return true
}

// 6. 用户按下触摸屏、快速移动后松开
// 参数:
// e1:第1个ACTION_DOWN MotionEvent
// e2:最后一个ACTION_MOVE MotionEvent
// velocityX:X轴上的移动速度,像素/秒
// velocityY:Y轴上的移动速度,像素/秒
override fun onFling(
e1: MotionEvent, e2: MotionEvent, velocityX: Float,
velocityY: Float
): Boolean {
Log.i("MyGesture", "onFling")
return true
}
})

commonDestureDetector.setOnDoubleTapListener(object : GestureDetector.OnDoubleTapListener {
override fun onSingleTapConfirmed(p0: MotionEvent?): Boolean {
TODO("Not yet implemented")
}

override fun onDoubleTap(p0: MotionEvent?): Boolean {
TODO("Not yet implemented")
}

override fun onDoubleTapEvent(p0: MotionEvent?): Boolean {
TODO("Not yet implemented")
}
})

```