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

为什么HTTPServlet是抽象类?有什么功能上的原因吗?

龙晟睿
2023-03-14
问题内容

HttpServlet是具有所有已实现方法的抽象类。为什么是抽象的?

我得到的最常见答案是,限制的实例化HttpServlet。但是还有其他方法可以执行此操作,例如私有构造函数将限制实例化。

我了解他们遵循模板方法设计模式。如果某些方法是抽象的,那么即使他的业务逻辑不需要它们,用户也将最终实现所有这些方法。

但是,如果HttpServlet不是抽象的,用户仍然可以扩展它并覆盖require方法。

至少从“抽象”一词的字典含义来看,使用所有已实现方法的抽象类对我来说没有任何意义。

是的,可以同时使用抽象方法和具体方法。

但是,如果要对类进行抽象处理,为什么不对子类必须覆盖的那些方法进行抽象处理呢?还是根本不将其声明为抽象?

喜欢doGet()还是doPost()这种情况。


问题答案:

为了具有任何有用的行为,预计您将必须重写这些方法。HttpServlet本身没有有用的功能。

将其构造函数设为私有将限制创建子类的能力。

HttpServlet的设计可能并不理想-
在许多页面(尤其是表单)上,GET和POST逻辑应至少部分沿着一条通用路径进行。然而HttpServlet的的设计理念是报价doGet()doPost()等实现接听根据HTTP版本“不支持”的错误。如果您需要返回这样的答案,这些存根对于继承很有用。

总而言之, API /接口 是完整的-但 功能 绝对不是。因此,它被声明为 abstract



 类似资料:
  • 问题内容: 为什么即使该类中没有抽象方法,也将类声明为抽象? 问题答案: 这是因为它遵循模板方法设计模式。这些方法具有返回HTTP 405 未实现方法 错误的所有默认行为。如果所有这些方法都是抽象的,那么即使您的业务需求根本不需要它们,也将不得不覆盖所有这些方法。这只会导致样板代码和不确定/不直观的行为。

  • 问题内容: 有什么理由使Java中的数组成为对象? 问题答案: 因为Java语言规范这么说 :) 在Java编程语言中,数组是对象(第4.3.1节),是动态创建的,并且可以分配给对象类型(第4.3.2节)的变量。Object类的所有方法都可以在数组上调用。 因此,与C ++不同,Java提供了真正的数组作为一流的对象: 有一个成员。 有一个方法可以覆盖class中同名的方法。 再加上班上的所有成员

  • 问题内容: 我得到了几种解释,但是到目前为止,我还无法理解Java中的抽象类和方法是什么。 有人说它必须与程序的安全性做些关系,另一些人说不是那样。 即使从Dietel&Dietel的书中,我也不明白它的目的。我们何时,何地,为什么使用它? 请像您正在教初学者一样进行解释,非常感谢您的帮助。 问题答案: 抽象类是无法实例化的类。唯一的目的是扩展其他类。 抽象方法是抽象类中的方法(必须声明为抽象),

  • 问题内容: 什么是Java中的“抽象类”? 问题答案: 抽象类是无法实例化的类。通过创建可以实例化的继承子类来使用抽象类。抽象类为继承的子类做一些事情: 定义继承子类可以使用的方法。 定义继承子类必须实现的抽象方法。 提供一个公共接口,该接口允许子类与所有其他子类互换。 这是一个例子: 请注意,“ abstractMethod()”没有任何方法主体。因此,你不能执行以下操作: 没有实现的方法!因此

  • 问题内容: 什么是PHP中的抽象类? 如何使用? 问题答案: 抽象类是至少包含一个抽象方法的类,该方法中没有任何实际代码,只是名称和参数,并且已标记为“抽象”。 这样做的目的是提供一种模板,以从其继承并强制继承类实现抽象方法。 因此,抽象类介于常规类和纯接口之间。接口也是抽象类的特殊情况,其中所有方法都是抽象的。 有关更多参考,请参见PHP手册的这一部分。

  • 问题内容: 当我尝试运行程序时,出现以下错误 请帮忙 问题答案: 从Javadoc: 如果Java虚拟机找不到声明为native的方法的适当本机语言定义,则抛出该异常。 这是与JNI相关的错误。loadJacobLibrary试图加载名为jacob-1.14.3-x86的本机库,但在java.library.path定义的路径上找不到该库。启动JVM时,应将此路径定义为系统属性。例如 在Windo