作者aligu (aligu)
看板java
標題[JSP ] HttpServletRequest為什麼是物件?
時間Tue Nov 3 14:45:24 2015
(原本詢問的標題為: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到底是介面還是類別?還是兩者都是?
懇請解惑,謝謝。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.240.137.56
※ 文章網址: https://webptt.com/m.aspx?n=bbs/java/M.1446533127.A.643.html
※ 編輯: aligu (123.240.137.56), 11/03/2015 14:48:45
※ 編輯: aligu (123.240.137.56), 11/03/2015 14:53:51
※ 編輯: aligu (123.240.137.56), 11/03/2015 14:54:43
1F:→ swpoker: B extends A => A o= new B();B o=new B();差異??? 11/03 15:01
2F:→ aligu: 樓上的是說"is-a"嗎?這概念我懂,但如果是A implements B 11/03 15:14
3F:→ aligu: (B是介面),也有"is-a"的適用嗎? 11/03 15:15
4F:→ Expsun: is like a 11/03 15:44
5F:→ ssccg: 那如果沒有Hello,而是寫 HttpServletRequest req = new 11/03 15:57
6F:→ ssccg: HttpServletRequest() { // implementation }; 11/03 15:58
7F:→ ssccg: 你覺得這可以叫什麼物件? 不就HttpServletRequest物件 11/03 15:59
8F:→ swpoker: java是 宣告 物件名稱=new 可實體的類別,是分開的 11/03 16:01
9F:→ swpoker: 所以HttpServleRequest是宣告 11/03 16:01
10F:→ ssccg: 我是說req是什麼物件 11/03 16:03
11F:→ ssccg: 其實寫a是<type>物件,單純只是指a的type是<type> 11/03 16:04
12F:→ ssccg: 沒有特別去分type是class還是interface吧 11/03 16:04
13F:→ swpoker: 沒有~就是宣告~A obj->首先A是宣告,再來A是何種型態 11/03 16:07
14F:→ aligu: 謝謝樓上各位的回答,我再想看看。 11/04 11:20