什么是抽象类什么是接口两者有什么区别?如何使用它