前提:
1,HttpServlet中service方法调用doGet()
2,一般我们自己的Servlet都会重写doGet()
3,在HttpServlet源码里是通过service方法来调用doGet()。问题:
父类不能调用子类重写的方法!那么HttpServlet是怎么做到调用子类重写的方法的?
1,HttpServlet中service方法调用doGet()
2,一般我们自己的Servlet都会重写doGet()
3,在HttpServlet源码里是通过service方法来调用doGet()。问题:
父类不能调用子类重写的方法!那么HttpServlet是怎么做到调用子类重写的方法的?
比如
HttpServlet servlet = new YourServlet();servlet.doGet() 因为你覆盖了doGet和doPost(),他父类调用doGet(),当然可以调用你覆盖的方法了。这就是覆盖的用处啊
包括service
你配置到web.xml中的Servlet是你自己写的,不是父类HttpServlet,
所以没有什么父类调用子类的说法,
是你写的Servlet类的一个实例调用了它自己的service,再调用doGet/doPost方法
这些实例化和方法调用都是由web容器完成的
不是类调用方法,而是类的实例对象调用方法
除非是static的方法可以由类直接调用了解一下多态吧
doGet();}abstract void doGet()