Fra*_*ank 20 oop abstract-class interface
可能重复:
何时使用接口而不是抽象类,反之亦然?
嗨,我正在向非程序员教授OOP概念.我想知道如何解释接口和抽象类之间的区别.
我实际上正在寻找的,是一个真实世界的例子,可以帮助突出两者之间的差异.
Col*_*ert 35
在我的Java课程中,我经常使用它
那种形象并问:"这是什么?"
每次有人会说"那是一名球员".从这张图片中你可以教任何人界面是什么.此接口允许任何用户"播放"某些内容.每个人都知道这些按钮的含义,即使你不知道将要做什么,你可以使用这个界面的任何东西,你知道小箭头将"播放",其他箭头可能会向前或向后发送你.具有这些按钮的所有内容都将提供任何用户在开始使用之前都会知道的标准行为.
我通常会尽量避免可能被误解的"契约"一词.
然后从Play界面,我转到录像机(或DVD)播放器.DVD播放器的每个构造函数都必须添加一些特殊功能,以将简单的未知播放器转换为DVD播放器.例如弹出按钮.他们必须正确实施播放器.
播放按钮将启动DVD的内容.
但即使DVD播放器提供DVD播放器的基本行为,也不是一切都已完成.你不能简单地拥有"一个"DVD播放器,它有一个品牌,大多数时候它有自己的固件.这次你需要扩展DVD Player抽象类来添加你自己的小组件.
cas*_*nca 21
这里有两个很好的比较:接口与抽象类.我从下面复制了一个具体的例子:
接口通常用于描述类的外围能力,而不是其中心标识,例如,汽车类可能实现Recyclable接口,该接口可以应用于许多其他完全不相关的对象.
抽象类定义其后代的核心标识.如果你定义了一个狗抽象类,那么达尔马提亚的后代就是狗,他们不仅仅是可爱的.已实现的接口枚举了类可以执行的一般操作,而不是类的内容.