接口vs抽象类(通用OO)
最近,我接受了两次电话采访,有人问我接口和抽象类之间的区别。我已经解释了我可以想到的各个方面,但是似乎他们正在等我提及一些特定的内容,我不知道它是什么。 根据我的经验,我认为以下是对的。如果我缺少要点,请告诉我。 接口: 接口中声明的每个方法都必须在子类中实现。接口中只能存在事件,委托,属性(C#)和方法。一个类可以实现多个接口。 抽象类: 子类仅必须实现Abstract方法。Abstract类可以具有实现的常规方法。抽象类在事件,委托,属性和方法旁边也可以具有类变量。由于C#中不存在多重继承,一个类只能实现一个抽象类。 毕竟,面试官提出了一个问题:“如果您有一个仅包含抽象方法的Abstract类,该怎么办?与接口有什么不同?” 我不知道答案,但我认为这是上面提到的继承对吗? 另一个面试官问我,如果接口内有一个Public变量,那和Abstract Class有什么不同?我坚持认为,接口内不能有公共变量。我不知道他想听什么,但他也不满意。 另请参阅: 何时使用接口代替抽象类,反之亦然 接口与抽象类 您如何决定使用抽象类和接口? 接口和抽象类之间有什么区别?