像
ServletContext application = this.getServletContext();
out.println(application.getClass().getName());
这里ServletContext不是接口吗 怎么可以像类一样实例化一个对象
而且getServletContext()的定义是
public ServletContext getServletContext()
是返回一个ServletContext接口吗?
像
ServletContext application = this.getServletContext();
out.println(application.getClass().getName());
这里ServletContext不是接口吗 怎么可以像类一样实例化一个对象
而且getServletContext()的定义是
public ServletContext getServletContext()
是返回一个ServletContext接口吗?
接口不能直接实例化,
只能new 一个它的实现类
这个方法中确实new了一个public ServletContext getServletContext();但是这个方法中new的实现这个接口的类,所以说不是接口被实例化了,
你多去了解一下多态吧,这就是接口的好处
接口是一种类型。
你可以用它来定义一个变量。
但是你不能new它,只能New实现了这个接口的具体类。(注意是具体类!)
ServletContext application = this.getServletContext();
这句只不过是得到了一个ServletContext类型的对象,而并没有实例化ServletContext咯,这里的this代表HttpServlet,而HttpServlet是个abstract类
接口可以像以父类对象引用子类对像的方式来引用实现该接口的类。
getServletContext()返回的是实现了ServletContext接口的类对象。
如:
public interface List{
void add(Object obj);
}
public class ArraryList implements List{
public void add(Object obj){
}
}
//测试
public class test{
//用接口来引用实现它的类对象
List list=new ArrayList();
list.add();
//这样可以系统的调用接口的方法,对系统的架构有很大的好处。也方便使用。
}