作者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/cn.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