最近有两次电话面试,他们问我Interface类和抽象类之间的区别。我已经解释了我能想到的每一个方面,但他们似乎在等我提一些具体的东西,我不知道是什么。
根据我的经验,我认为以下是正确的。如果我遗漏了一个要点,请告诉我。
接口说明
接口中声明的每个方法都必须在子类中实现。接口中只能存在事件、委托、属性(C#)和方法。一个类可以实现多个接口。
抽象类:
只有抽象方法必须由子类实现。抽象类可以有带实现的普通方法。抽象类也可以有除了事件、委托、属性和方法之外的类变量。一个类只能实现一个抽象类,因为C#中不存在多重继承。
在这之后,面试官提出了一个问题“如果你有一个只有抽象方法的抽象类怎么办?这与接口有什么不同?”我不知道答案,但我认为这是上面提到的继承,对吧?
另一个面试官问我,“如果你在界面中有一个公共变量,那会和抽象类有什么不同?”我坚持认为你不能在界面中有一个公共变量。我不知道他想听什么,但他也不满意。
另见: