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

是否有任何理由要在定义的类的每个方法中都有一个抽象类?

曹沛
2023-03-14
问题内容

似乎抽象类意味着该类的定义不完整,因此无法实例化。

我看到了一些简单的Java代码,其中包含一个抽象类,其中定义了所有方法。然后我想知道,为什么他们将其作为抽象类而不是真实类?他们是在这样做,所以我们不能从这个抽象类实例化吗?还是从定义了所有内容的抽象类中获得其他好处?


问题答案:

即使所有方法都具有默认实现,也有可能这些实现在应用程序上下文中实际上没有 意义
。这些方法可能仅进行内部记账,而实际有用的实现必须由派生类提供,该派生类将执行其需要执行的操作,然后调用超类方法。

但是,这仅仅是猜测。您将必须显示一个实际示例来说明这种设计的原因。

例如,让我们以一个简单的游戏引擎为例。我的GameObject游戏中有很多不同的地方。

  • 有些是可见的,所以我的基本类有一个draw()方法。但是可能有一些看不见的对象(如触发器区域)根本不显示,因此我在基类中将其实现为无操作。

  • 有些人与某物碰撞时会做某事,因此每个人都有一个collide(other)方法。但是有些碰撞时就像纯粹的视觉粒子效果一样,什么也不做,因此我在基类中也提供了禁止操作的功能。

  • 有些人在每次游戏打勾时都会做一些事情,所以他们有update()办法。但是某些对象(例如墙)可能根本无法独自执行任何操作。因此,我也对此不提供任何操作。

那么,当我有一个不可见的对象,自己不做任何事情并且不与任何东西交互时,该怎么办?在游戏中没有理由。所以我做了基础课abstract从理论上讲,
您可以实例化它,因为所有方法都有实现,但是 实际上 您没有理由这样做,并且当您尝试时,您会误解了我的游戏引擎的工作方式。



 类似资料:
  • 问题内容: 是否可以在不添加抽象方法的情况下定义抽象类? 问题答案: 当然。 声明一个类抽象仅意味着您不允许自己对其进行实例化。 声明方法抽象意味着子类必须提供该方法的实现。 这两个是单独的概念,尽管很明显,您不能在非抽象类中使用抽象方法。您甚至可以使用带有方法的抽象类,但绝不能相反。

  • 问题内容: 可以有一个 实现所有方法 的抽象类-里面没有抽象方法。 例如。: 与拥有与具体类相同的类相比,拥有这样的抽象类(如果有)有什么优势? 我能想到的是,当我将其声明为抽象时,它将不会被实例化。但是,我可以通过将其具体化并将其构造函数设为私有来达到相同的效果。 TIA。 // ================== 编辑:我能想到的另一种用途: 它可能会扩展另一个抽象类或实现一个接口,而不实现

  • 问题内容: 如果是这样,为什么会发生此错误?该对象不是或如图所示。 我使用调试我的应用,这张照片摄于。 快速配置: 感谢您的意见,现在我发现是,但新的问题是,如何使再次作品?我想返回如下字符串: 如何重新签署适当的方法? 我尝试了undefined ,不好。看到: 问题答案: JS中的每个对象是否都有toString()方法? 否。只有那些继承自(如所有普通对象一样)或自行定义(或从其自定义原型继

  • 问题内容: 抽象类是否必须至少具有一个抽象方法? 问题答案: 这篇文章的主题和正文提出了两个不同的问题: 它应该至少有一个抽象成员吗? 是否需要至少一个抽象成员? #2的答案肯定是“否”。 #1的答案是主观的,是风格的问题。我个人会说是的。如果您的目的是防止实例化一个类(没有抽象方法),那么最好的方法是使用构造函数,而不是对其进行标记。

  • 问题内容: 我的团队没有经验丰富的JS开发人员,但是我们正在Node中编写一个库,并得到了一位真正的JS开发人员的建议:“我们应该使js更具模块化- 不会污染全局名称空间并使之更具可读性。给新来者”,并告诉我们执行以下操作: 而不是 这有什么意义(如果有)?后者不会进行IIFE范围内的任何本地声明,即使这样,它们对于模块文件也是本地的,而不是整个文件的全局程序。 尽管我已经阅读了许多关于IIFE的

  • 本文向大家介绍抽象类必须要有抽象方法吗?相关面试题,主要包含被问及抽象类必须要有抽象方法吗?时的应答技巧和注意事项,需要的朋友参考一下 不需要,抽象类不一定非要有抽象方法;但是包含一个抽象方法的类一定是抽象类。 示例代码: 上面代码,抽象类并没有抽象方法但完全可以正常运行。