[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