新建两个类
第一个类,HttpServlet类,新建两个方法,service()与doGet()方法
package com.pkushutong.oop.Servlet;
public class HttpServlet {
public void service(){
System.out.println("service输出语句");
doGet();
}
public void doGet(){
System.out.println("doGet方法");
}
}
第二个类,MyServlet类,继承HttpServlet类,然后新建一个方法,doGet()方法。
package com.pkushutong.oop.Servlet;
public class MyServlet extends HttpServlet{
public void doGet(){
System.out.println("子类doGet方法");
}
}
新建一个测试类,测试多态到底调用哪个方法
package com.pkushutong.oop.Servlet;
public class TestServlet {
public static void main(String[] args) {
HttpServlet hs = new MyServlet();
hs.service();
}
}
最后输出结果调用了子类里的doGet()方法
测试类里通过父类引用指向子类对象,然后hs.service(),从子类开始往上找,在HttpServlet里找到了,但是service()方法里调用了doGet()方法,哪这个doGet是本类的方法还是MyServlet里的doGet()方法呢?
简单理解,就是service()方法里调用了doGet()方法,而doGet()方法前面默认有this隐式参数,我们不加系统会自动给我们加上的,就等于是this.doGet(),哪这就明白了,doGet()方法调用的是整个子类对象里的doGet()方法,也就是子类对象里的方法,MyServlet类里的doGet()