爲什麼HttpServlet
類被聲明爲抽象,即使該類中沒有抽象方法?爲什麼HttpServlet類被聲明爲抽象?
回答
這是因爲它遵循Template Method設計模式。 doXxx()
方法具有返回HTTP 405 方法未實現錯誤的所有默認行爲。如果這些方法都是抽象的,那麼即使您的業務需求根本不需要,您也將被迫覆蓋它們。這隻會導致樣板代碼和不明/不直觀的行爲。
可能是爲了防止通過創建實例來直接實例化HttpServlet。
換句話說,要確保每當使用HttpServlet時,它總是由子類擴展。
否......可以被覆蓋。這裏距離Herbert Shcildt的Java 2的例子中:完全參考
import java.io.*;
import javax.servlet.*;
public class HelloServlet extends GenericServlet
{
public void service(ServletRequest request,ServletResponse response) throws ServletException, IOException
{
response.setContentType("text/html");
PrintWriter pw = response.getWriter();
pw.println("<B>Hello!");
pw.close();
}
}
它被聲明爲一個類而不是一個接口來實現設置servlet所需的大部分cruft/repeatable代碼。它被聲明爲abstract
,因爲實例化一個只關注安裝並且不包含任何定製/用戶定義邏輯的「裸骨」servlet是沒有意義的。
HttpServlet類被聲明爲抽象類爲什麼因爲太陽人不想創建一個對象到HttpServlet類,因此它被聲明爲抽象類。
你怎麼知道HttpServlet類沒有abstarct方法
公共類的TestServlet延伸的HttpServlet {} // 編譯上面的程序,如果我們能夠編譯再就是在HttpServlet類沒有抽象方法 我們需要騎車。
「你怎麼知道HttpServlet類沒有abstarct方法」 - 看看Javadoc會給你這個信息。 –
HttpServlet類的所有方法都是具體的,即使我們聲明這個類爲抽象類,因爲任何類都可以具有null或更多抽象方法以及具體方法。 2>總是我們通過擴展HttpServlet.hence來使得我們的servlet只有派生的servlet類可以使對象。
歡迎使用stackoverflow。這個線程是相當古老的。通常最好避免復活陳舊的線程,除非響應比以前的響應貢獻了重要的東西。 – Leigh
HttpServlet是一個沒有任何抽象方法的抽象類,因爲Web容器製造商通過聲明抽象方法限制開發人員創建對象。
Web容器應該調用doGet()和doPost(),它應該處理Servlet的所有生命週期。
如果我們被允許創建一個HttpServlet對象,我們限制容器調用doGet()和doPost(),但這是容器本身的工作,它應該處理Servlet的所有生命週期。因此,我們不應該創建HttpServlet的對象,所以這就是爲什麼它沒有任何抽象方法標記抽象類。
- 1. 需要聲明HttpServlet類爲抽象類型嗎?
- 2. 抽象類聲明爲final
- 3. Java爲抽象類聲明類?
- 4. 類必須聲明爲抽象或?
- 5. 必須被聲明爲抽象或實現抽象方法
- 6. 抽象類聲明
- 7. 類必須被聲明爲抽象或實現抽象方法錯誤
- 8. 類'MainActivity'必須被聲明爲抽象或實現抽象方法'OnClick(View)'in'OnClickListener
- 9. AsyncHttpResponseHandler類必須被聲明爲抽象或實現機器人
- 10. AMUST要麼被聲明爲抽象或實現抽象方法實現
- 11. 爲什麼main不被聲明爲extern
- 12. 爲什麼WebFrameLoadDelegate被視爲未聲明?
- 13. 爲抽象方法聲明抽象類是否強制?
- 14. 類必須聲明爲抽象或實現抽象方法?
- 15. 類必須聲明爲抽象或實現抽象方法toArray
- 16. 爲什麼我的子類被認爲是一個抽象類?
- 17. 爲什麼要在C#中聲明靜態類爲密封和抽象?
- 18. 抽象類方法聲明
- 19. C++抽象類型聲明
- 20. 抽象類聲明在C++
- 21. 「級必須被聲明爲抽象或實現抽象方法」創造
- 22. 允許在非抽象類中聲明抽象方法的目的是什麼?
- 23. 爲什麼C#接口方法未聲明爲抽象或虛擬?
- 24. 實現與抽象類的接口時聲明什麼(不)?
- 25. 類 '從AdListener的派生匿名類' 必須被聲明爲抽象或實現抽象方法 'onLoggingImpressionMethod(AD)'
- 26. 爲什麼需要抽象類?
- 27. 爲什麼使用抽象類
- 28. 爲什麼需要抽象類?
- 29. 爲什麼HttpServletRequestWrapper類不是抽象的
- 30. 爲什麼ClassLoader是一個抽象類?
因爲這是他們設計的方式。不建設性。 – EJP