gpt4 book ai didi

java - 为什么 HTTPServlet 是一个抽象类?任何功能原因?

转载 作者:搜寻专家 更新时间:2023-10-30 21:24:05 25 4
gpt4 key购买 nike

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

我得到的最常见的答案是限制HttpServlet 的实例化。但是还有其他方法可以做到这一点,比如私有(private)构造函数会限制实例化。

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

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

至少根据“抽象”一词的字典含义,拥有一个包含所有已实现方法的抽象类对我来说没有任何意义。

是的,可以结合使用抽象方法和具体方法。

但是如果你正在使一个类抽象,为什么不使子类必须覆盖的那些方法抽象呢?或者可能根本不将其声明为抽象的?

doGet()doPost() 就是这种情况。

最佳答案

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

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

HttpServlet 的设计可能并不理想——因为在许多页面上,尤其是表单上,GET 和 POST 逻辑应该至少部分地沿着公共(public)路径进行。然而,HttpServlet 的设计思想是提供 doGet()doPost() 等实现,以根据 HTTP 版本回答“不支持”错误。如果您需要返回这样的答案,这些 stub 将有助于继承。

总而言之,API/接口(interface) 是完整的——但功能 绝对不是。因此它被声明为抽象

关于java - 为什么 HTTPServlet 是一个抽象类?任何功能原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18909206/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com