java中HttpServletRespone接口中的方法为什么能直接用,接口里的方法不都是抽象的吗?
如List也是接口
LIst list=new ArrayList<>();
list就可以使用方法了
接口里的方法不一定是抽象的,只要有一个方法是抽象的它就是接口
HttpServletResponse接口定义了很多发送响应的方法都是写好可以直接用的
只要引入javax.servlet.http包就可以
HttpServletRespone接口是抽象的没错,但是HttpServletRespone代表的对象可不是抽象的。
你调用的是一个实现了这个接口的具体的类的方法。
反过来说,如果抽象的接口没有办法通过具体的对象调用,那这种接口还有个屁用。
首先,我们要清楚一个概念,那就是多态.
而为何接口中的抽象方法能直接执行,也就是因为我们实际上是在执行HttpServletResponse接口的子实现类重写的方法.
HttpServletResponse接口的子实现类的对象,在第一次请求服务器时已被创建.我们只关注方法的实现,而不用过于关注接口的实现类是谁.
接口A可以有B、C多种实现,通过接口A去声明对象,得到的对象a可能是B的实现也可以是C的实现,看你new的是B还是C。
接口是稳定的,但是具体接口中方法的逻辑是什么就取决于你new的是哪个实现类了。
这就是面向对象的多态。换个角度,也是我们常说的面向接口编程。针对接口,可以提供多个实现。
其它问题也可以私信问我,知无不言。
这里涉及到多态、面向接口编程的概念,抽象类 和 接口 虽然不能直接实例化但是却可以指向子类对象,说的有点绕,请参考mvc模式中spring注入service对象。
说实话这些回答问题的连问题是什么都没有搞懂,不一定比提问题的知道的多。
因为 HttpServletRequest 和 HttpServletResponse 是 Servlet 的重要接口之一,你只需要使用接口的方法即可,不需要关心接口的实现,Tomcat 服务器有自己的实现