何时使用抽象类以及何时使用Java接口?