接口和抽象类有什么共同点和区别?