当前位置: 首页 > 面试题库 >

抽象类:-实时示例

姜杜吟
2023-03-14
问题内容

最近,在一次采访中,有人问我一个非常笼统的问题:“
java中的抽象是什么”。我给出了定义,接着是关于抽象的其他问题,即什么是抽象方法以及抽象方法与具体方法之间的区别等。最后面试官要求我提供一个实时示例,说明我应该使用或将类定义为抽象类。我感到困惑。我给出了一些示例,但他没有被说服。

我用谷歌搜索,但没有找到真正的解决方案。

因此有人可以给我实时示例,即当他/她的项目中将类定义为抽象时,为什么?

谢谢。


问题答案:

从这里可以找到一个实时的好例子:

抽象类的一个具体示例是名为Animal的类。您会在现实生活中看到许多动物,但只有几种动物。也就是说,您永远不会看着紫色和毛茸茸的东西,而说“那是一种动物,没有更具体的定义方法”。相反,您看到的是狗,猫或猪……所有动物。关键是,您永远也看不到没有四处走动的动物(鸭子,猪等)。Animal是抽象类,Duck
/ Pig / Cat是从该基类派生的所有类。动物可能会提供称为“年龄”的功能,从而使动物的寿命延长一年。它还可能提供称为“
IsDead”的抽象方法,调用该方法时,它将告诉您动物是否死亡。由于IsDead是抽象的,每个动物都必须执行它。因此,猫可能会在14岁时决定死亡,而鸭子可能会在5岁后决定死亡。抽象类Animal为所有从其派生的类提供Age函数,但是这些类中的每一个都必须自己实现IsDead。

一个业务示例:

将List作为抽象类是没有意义的,因为anArrayList与LinkedList的工作方式存在根本差异。同样,映射和设置。而且,如果我只使用一组对象,而不必关心它是列表,地图还是集合,则可以使用Collection接口



 类似资料:
  • 问题内容: 我创建了一个空的抽象类,并从中继承了该类: 我期望输出是 但是,我得到的是 如果我删除(这样就变成一个普通的类)和/或如果我设置了其他值,问题(显然)就消失了。 这里发生了什么? 问题答案: 这实际上不是ABC的问题,而是PyMongo的问题。有一个关于它的问题在这里。似乎pymongo重写以返回某种数据库类。这意味着将返回一个数据库对象,该对象在布尔上下文中为true。这使ABCMe

  • 我查过了,发现最接近的是这个,除了我没有任何向前的声明。我在基类中只有一个纯虚函数,我在子类中实现它,如下所示: 命令H 命令cpp 数字H 数字cpp 发生文件错误: 一个dd.cpp 添加H

  • 假设我有这门课: 以及子类: 我知道这是不可能的,但我想你明白我想要什么。如果Foobar实现了Cloneable,并且没有扩展AbstractFoo,那么子类就可以工作。我想我想要但不允许的是: 如果Foobar实现了Cloneable,并且没有扩展AbstractFoo,那么子类就可以工作。 除了扩展的抽象类,我怎么能做到“相同”?

  • 我有两个方法和抽象类的接口,它们实现了这个接口并从它重写了一个方法。我可以实例这个抽象类,而不重写接口的其他方法吗?或者我可以用具有另一个签名的方法替换此方法吗? UPD:谢谢你的回答,我真的在我的问题上犯了错误。我是否可以使用匿名类来扩展我的抽象类,而不重写来自实现的所有方法?我如何理解DragonK的回答,不,我需要创建类,这将是扩展抽象类和重写其他方法?

  • 所以我有两个类。一个只有纯粹的虚拟函数。另一个实现了这些函数,并从第一个类派生出来。我知道我不能实例化第一个类。但是当我试图创建第二个类的对象时,它也失败了。 我的第二节课大体上是这样的: 执行: 下面是我如何实例化它并得到错误: 我哪里做错了? 第一课