我对java层次结构模型的一些事实有点关注。
如java教程中所述:
抽象类可能无法实现方法(但它们可以)以及如果您实现 从一个抽象类扩展,你必须实现所有方法 超类否则新类也必须是抽象的
但是现在,我正在学习servlet类,发现我的servlet运行即使我没有实现HttpServlet中声明的所有方法,发生了什么?我看到在源代码中它们是受保护的方法(dopost,doget等),甚至它表示已编译的代码)但即使它们受到保护我们如何扩展方法来创建新的servlet,是因为公共抽象HTTPservlet签名?
我也发现这很不寻常,这是什么意思?
private static final
String METHOD_DELETE = "DELETE";
private static final
String METHOD_HEAD = "HEAD";
private static final
String METHOD_GET = "GET";
当您查看实现servlet,servletconfig,serializable的Public抽象类GenericServlet时,所有其他理论都可以。我的想法是在将来有一个类,不一定需要实现像httpservlet那样的所有接口方法。
与您非常相似,我也希望了解更清晰或更深入的java类建模资源。
When an abstract class is subclassed,子类通常为其父类中的所有抽象方法提供实现。但是,如果没有,那么子类也必须声明为abstract。
是的,我误解并误读了httservlet规则只适用于抽象方法,没有身体只是签名但httpsevlet方法不是抽象的,他们有实现但是编译=)非常感谢,我明白为什么现在我们不需要实现那些方法和httpservlet使用的接口。
答案 0 :(得分:1)
抽象类可能无法实现方法(但它们可以),如果从>抽象类扩展,则必须实现超类的所有方法,否则新类必须是>抽象
我认为你误读了。
抽象类确实实现了方法,在将抽象类扩展为具体类之前,您不能使用这些方法。通常这样做是因为抽象类中的方法将在各种扩展类中重用。这样做的一些原因是删除重复,并隐藏锅炉板代码。
在HttpServlet中,您将获得所描述方法的默认实现。当您想要扩展HttpServlet的行为以满足您的特定需求时,可以覆盖您选择的那些。