在最近面试趋势的背景下,我注意到这个问题每次都会出现。但是当一个人回答了一般的定义,那么面试官就会说每个人都知道……说点不一样的。进一步的场景是问在哪里使用哪一个是有益的,为什么?
因此,请分享对这个话题的任何新见解。
先谢谢你...
发布于 2010-08-27 22:39:05
抽象类可以定义方法的基实现以及受保护或私有的数据成员,而接口仅定义类必须与公共数据成员一起提供的功能。
我喜欢这样看待它:抽象类是其他类的基础。它不仅指定了特定的一系列事物必须具有的操作,而且还指定了这些操作执行其工作所需的数据。特定的子节点可以添加(如果需要,甚至可以忽略)特定的数据元素。另一方面,接口是一种契约-它没有说明你将如何做某事,只有你必须做的事情和你将使外部世界可见的事情。你的内部工作是你自己在接口中的事。
发布于 2010-08-27 22:39:35
抽象类可以为它们的方法提供实现,而接口严格地提供了一个约定(对象必须实现什么方法)。
当您想要为继承者提供一个基本实现,但又不想直接创建类的实例时,抽象类非常有用。例如,考虑一辆汽车。你可能不想创建一辆通用汽车,但每种关怀都可以共享一些基本的功能:
public abstract class Car
{
public InternalCombustionEngine Engine { get; private set; }
public virtual void Start()
{
Engine.Start();
}
public abstract void Drive();
}当您有一些可能彼此不直接相关的类,但您希望以相同的方式处理这些类时,接口非常有用,因为每个类都有一组相似的功能。
发布于 2010-08-27 22:46:08
除了其他人所说的之外,我将接口视为跨类通用但不在is-a关系中的行为的关系。它是一种表达常见行为的方式,而不是继承is-a关系。我相信这就是为什么有些人会把接口称为穷人的多重继承。
https://stackoverflow.com/questions/3585243
复制相似问题