面向对象第十五课,多态内存深化分析

新建两个类

第一个类,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()


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值