【发布时间】:2012-03-18 01:52:47
【问题描述】:
我对 Java 中的多态性和接口有点困惑。
基本上我想创建一个名为 gestureRecogniser 的类,它具有以下方法:
-onLeftwardsSwipe();
-onRightwardsSwipe();
-onUpwardsSwipe();
-onDownwardsSwipe();
gestureRecogniser 会根据需要调用这些方法。第二个类实现了gestureRecogniser 并指定必须对这些事件执行什么操作。这在 Java 中可行吗?
这是我写的课程:
public abstract class GestureRecogniser implements OnTouchListener {
Activity activity;
private float XWherePressed;
private float XWhereReleased;
private float YWherePressed;
private float YWhereReleased;
private static final int MINIMUM_DISTANCE_FOR_SWIPE = 100;
public GestureRecogniser(Activity activity)
{
this.activity = activity;
}
public abstract void onLeftwardsSwipe();
public abstract void onRightwardsSwipe();
public abstract void onUpwardsSwipe();
public abstract void onDownwardsSwipe();
public boolean onTouch(View v, MotionEvent event)
{
switch(event.getAction())
{
case MotionEvent.ACTION_DOWN:
this.XWherePressed = event.getX();
this.YWherePressed = event.getY();
break;
case MotionEvent.ACTION_UP:
this.XWhereReleased = event.getX();
this.YWhereReleased = event.getY();
float deltaX = XWhereReleased - XWherePressed;
float deltaY = YWhereReleased - YWherePressed;
if (Math.abs( deltaX ) > this.MINIMUM_DISTANCE_FOR_SWIPE)
{
//HORIZONTAL SWIPE
if(deltaX > 0 )
{
this.onRightwardsSwipe();
return true;
}
if(deltaX < 0)
{
this.onLeftwardsSwipe();
return true;
}
}else return false;
if (Math.abs( deltaY) > this.MINIMUM_DISTANCE_FOR_SWIPE)
{
//VERTICAL SWIPE
if( deltaY < 0 )
{
this.onDownwardsSwipe();
return true;
}
if ( deltaY > 0 )
{
this.onUpwardsSwipe();
return true;
}
}else return false;
break;
}
return false;
}
}
【问题讨论】:
标签: java android interface polymorphism abstract-class