1. Abstraction
2. Encapsulation
3. Inheritance
4. Polymorphism
如何最好地解释这些概念,例如,在面试中?
答案 0 :(得分:9)
<强> 1。抽象强>
只向用户展示他需要的东西,而不是额外的东西 信息(使用公共私人,受保护)。抽象是在完成的时候完成的 我们需要继承某些类但不实例化 该类的对象。
<强> 2。封装强>
将所有相关事物组合在一起。即封装是 在单个单元中包装/绑定数据和成员函数。在 简单,抽象是隐藏实现和封装 隐藏数据。
第3。继承
如果已存在某些东西,我为什么要重新创建它(与重新发明轮子相同)。使用继承继承该类的所有内容 进入你的班级。继承使您可以创建重用,扩展和修改在其他类中定义的行为的新类
<强> 4。多态性
当物体在不同情况下表现出不同的行为时。 以简单的方式,当消息可以以不同的方式/形式处理时。
答案 1 :(得分:5)
与非技术人员交谈时,我使用类比。
<强>抽象强>
这就像编写Lion,Pinguin和Salmon的共享行为一样。所有这些都是不同的,但它们有一些共同特征:它们都是吃,呼吸,死亡等。 这就是为什么抽象很重要,因为它允许我作为开发人员编写像&#34; Animal&#34;对象,定义了它们的共同行为。
<强>封装强>
想象一下拥有多个部门的大公司。
每个部门都为人们提供服务,例如&#34;客户服务电话&#34; 公共方法。
然后,各部门相互交流,请求信息,委派任务:受保护的方法。
最后,在每个部门内部管理一些职责,例如,向员工付款:私人方法。
因此,封装将把一些服务设置为public,protected和private,具体取决于谁可以请求它们。
<强>继承强>
还记得那些狮子,pinguins和鲑鱼吗?还记得他们都是动物吗? 那么,遗传就是,例如,当一只动物出生时,它们的出生日期是#34;定义为&#34;今天&#34;。这种行为将由所有动物类型共享,因此,狮子pinguins和鲑鱼将继承出生行为&#34;
<强>多态性强>
这个与继承非常相似,是技术差异的主要区别,因此我甚至不会尝试向非技术人员解释它。
答案 2 :(得分:2)
汽车蓝图 - &gt;类
car - &gt;对象
轮 - &gt;构件
警车蓝图 - &gt;儿童班
汽车发动机 - &gt;封装(你的汽车对象的用户不需要与它交互,更好地隐藏它)
快速从a到b - &gt;多态方法,可以在普通汽车或警车上调用,但不会做同样的事情(警车会打开警报器并烧灯)
需要描述如何使用这些汽车?创建IVehicle,这是他们的界面。在现实世界中不存在IVehicle这样的东西,但无论如何它立即描述实现它的东西是有用的。 - &GT;抽象。
等...