[JSP ] 有HttpServletRequest類別型態的物件嗎?

作者: aligu (aligu)   2015-11-03 14:45:24
(原本詢問的標題為: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到底是介面還是類別?還是兩者都是?
懇請解惑,謝謝。
 
作者: swpoker (swpoker)   2015-11-03 15:01:00
B extends A => A o= new B();B o=new B();差異???
作者: aligu (aligu)   2015-11-03 15:14:00
樓上的是說"is-a"嗎?這概念我懂,但如果是A implements B(B是介面),也有"is-a"的適用嗎?
作者: Expsun (無限燃燒)   2015-11-03 15:44:00
is like a
作者: ssccg (23)   2015-11-03 15:57:00
那如果沒有Hello,而是寫 HttpServletRequest req = newHttpServletRequest() { // implementation };你覺得這可以叫什麼物件? 不就HttpServletRequest物件
作者: swpoker (swpoker)   2015-11-03 16:01:00
java是 宣告 物件名稱=new 可實體的類別,是分開的所以HttpServleRequest是宣告
作者: ssccg (23)   2015-11-03 16:03:00
我是說req是什麼物件其實寫a是<type>物件,單純只是指a的type是<type>沒有特別去分type是class還是interface吧
作者: swpoker (swpoker)   2015-11-03 16:07:00
沒有~就是宣告~A obj->首先A是宣告,再來A是何種型態
作者: aligu (aligu)   2015-11-04 11:20:00
謝謝樓上各位的回答,我再想看看。

Links booklink

Contact Us: admin [ a t ] ucptt.com