简述抽象类和接口的主要区别