关于servlet中service()方法参数的问题

请教一下大家,servlet中的service()方法,一般会传入2个参数:ServletRequest request 和ServletResponse response 。ServletRequest和ServletResponse是2个接口,接口是不能实例化的,那么为什么可以定义他们的对象 request和response 呢?

5个回答

意思就是sevlet api可以传入任何实现[code="java"]ServletRequest,ServletResponse[/code]
的类,这叫做多态,如:
[code="java"]
Object obj = new String();
ServletRequest sr = new HttpServletRequest();
[/code]

zhuyong7
你丫才是码农 你好,谢谢你这么晚还来回答我的问题~多态我是知道一点点,你的意思是说request和response两个参数其实是分别实现了ServletRequest和ServletResponse两个接口的实现类的对象?我自己也是这么想的,就是一直没找到支持我这个想法的资料。。
接近 6 年之前 回复
huangsitan_usa
huangsitan_usa 如果你不知道什么是多态,百度一下
接近 6 年之前 回复

子类现实或者继承,多态的考虑

面向接口编程的思想吧 但是实际的参数应该是实现这两个接口的实现类实例

forgetanything
forgetanything 这不是权威不权威的问题 这是面向对象编程的一些原则问题, 我们自己的写代码的时候也是面向接口的,你可以看看里氏替换原则和依赖倒置原则
接近 6 年之前 回复
zhuyong7
你丫才是码农 我也一直是这么安慰自己的,就是一直找不到权威一点的论证。请问你有在某些资料上看到过这种说法吗?
接近 6 年之前 回复

换个角度想, 如果你的参数是HttpServletRequest 和response, 那么你的参数就定死了, 就是这两个, 如果你想要扩展它, 岂不是很麻烦了 ? 或者说,你想传进来的不是Httpservletrequest, 而是servletrequest的另一个实现,岂不是不能满足你了? 这种比较底层的东西, 一般都会写的扩展性比较强, 这样更通用.

HttpServletRequest req = (HttpServletRequest)request;

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐