What's the difference between an interface and an abstract class?
本问题已经有最佳答案,请猛点这里访问。
复制品:
When to use an interface instead of an abstract class and vice versa?
可能是最著名的软件开发人员工作面试问题之一。
你的答案是什么?
编辑:我想知道在现实生活中你会如何回答这个问题。请试着像在真实的工作面试中那样制定你的答案(要完整,但不要太长,当然不要发布任何链接)。
接口只描述其方法等的实际签名。任何实现该接口的类都必须提供显式实现。
抽象类可以包含其方法等的部分实现。
接口提供必须由类实现的方法的定义。接口的目的是允许您概括特定的功能,而不考虑实现。您可能有一个
抽象类是包含一些抽象方法的基类。它们不能被实例化,它们将从中派生。抽象类的目的是允许您定义一些通用功能和子类,以便在适当的情况下实现更具体的功能。
因此,总而言之,当每个类的实现完全不同时,应该使用接口。当您有一些类似的行为,但需要以不同的方式实现部分时,请使用抽象类。
希望有帮助。
抽象类可以有成员变量,接口不能(或者,在C++中不应该)。
在Java中,"接口"是一个定义良好的语法元素,而在C++中,它仅仅是一种设计模式。
就工作面试而言,我一直听说关键点是一个接口是一个合同;一个接口虽然不实现它本身,但它保证了功能性。
我认为差异是语言依赖的,但是在C++中至少抽象类是实现接口的手段。