httpservletRequest与ServletRequest强制转换

来源:百度知道 编辑:UC知道 时间:2024/05/05 12:20:21
HttpServletRequest hsreq=(HttpServletRequest) arg0;
HttpServletResponse hsres=(HttpServletResponse) arg1;
(ServletRequest arg0, ServletResponse arg1)
为什么ServletRequest可以强制转为HttpServletRequest ,HttpServletRequest 好像是继承了ServletRequest 的
一般父类不可以强制转为子类

最根本的原因是:它原本就是一个HttpServletRequest类型,而它的编译类型用
ServletRequest来表示,当要用到HttpServletRequest类中的方法时,自然可把
它强转回来啊。

HttpServletRequest 与 ServletRequest 都是接口,
而前者是后者的子接口,这两者的实例对象并不是通过他们的构造来得到的,而是通过他们的实现类的构造来得到.

你自己不是回答了嘛
HttpServletRequest继承了ServletRequest,当然可以向下转型。

子类赋给父类 可以,这是因为多态
父类赋值给子类,有时候行,有时候不行

什么时候行?
当父类对象是由子类new出来的时候,就可以. 虽然看起来是父类(栈中),但本质是子类(堆中),所以当前父类和子类可以来回切换
父类不是由子类new的话,就不可以 所有类都继承Object,难么object就可以调用其他任何对象的方法么?.这样会破坏类的封装性原则.

ServletRequest和HttpServletRequest都是接口,其实例化是由tomcat(服务器)完成,实例化的都是HttpservletRequest类型,所以ServletRequest和HttpServletRequest可以来回转化

http://www.cnblogs.com/hanbin/p/4780607.html

HttpServletRequest 是ServletRequest 的子类。
ServletRequest可以强制转为HttpServletRequest的原则应该是隐性的条件是ServletRequest可以转换为他的这个子类,这也是java多态性的表现吧