(原本詢問的標題為:HttpServletRequest為什麼是物件",
但想想覺得問的不對,所以改了問題標題)
請問關於"介面"、"介面物件"的一個基本的問題,但我一直想不懂。
我在看良葛格的"Servlet & JSP教學手冊(第二版)的
3-2 頁末段有一段話:
"當請求來到HTTP伺服器,而HTTP伺服器轉交請求給容器時,
容器會建立一個代表當次請求的HttpServletResquest物件,(後略)"
在次頁也就是3-3頁一開始也有一段話:
"如果你查詢HttpServletRequest、HttpServletResponse的API文件說明,
你會發現它們都是介面(interface),(後略)"
那我的疑問在於,HttpServletRequest既然是個介面,
應該頂多就是讓其他類別去實作(implement),
比如寫了一個Hello類別,並實作了HttpServletRequest介面,
(public class Hello implements HttpServletRequest { ... })
那麼當我new Hello()後,也就是實例化的物件不就應該稱作Hello物件 ?
怎樣也不應該被稱作是HttpServletRequest物件吧?
我查了一些資料,有說介面不能被實例化,但也有"介面物件"這種名詞,
而且在Servlet的doGet()或doPost()方法中,一開始都會這樣寫:
"protected void doPost(HttpServletRequest req,
^^^^^^^^^^^^^^^^^^^^^^
HttpServletResponse resp) (後略)"
^^^^^^^^^^^^^^^^^^^^^^^^
這不就是說req是一個HttpServletRequest類別型態的物件?
那HttpServletRequest到底是介面還是類別?還是兩者都是?
懇請解惑,謝謝。