• 047_面向对象_20_内存分析深化


     一、演示示例(以往后我们学到的servlet为例)  

    package edu.aeon.test;
    /**
     * [说明]:测试多态(servlet)
     * @author aeon
     *
     */
    public class HttpServlet {
        public void service(){
            System.out.println("HttpServlet.service()");
            doGet();//其实和this.doGet()一样、所以此处的this指向谁调用谁的
        }
        public void doGet(){
            System.out.println("HttpServlet.doGet()");
        }
    }
    package edu.aeon.test;
    /**
     * [说明]:重写edu.aeon.test.HttpServlet类中的service()方法(因为多态基于继承(重写)、父类引用指向子类对象)
     * @author aeon
     *
     */
    public class MyServlet extends HttpServlet {
        @Override
        public void doGet() {
            System.out.println("MyServlet.doGet()");
        }
    }
    package edu.aeon.test;
    /**
     * [说明]:测试多态
     * @author aeon
     *
     */
    public class Test {
    
        public static void main(String[] args) {
            HttpServlet httpServlet = new MyServlet();//父类引用指向子类对象
            httpServlet.service();
        }
    }

    测试结果截图:

      

       本示例在内存中的结构图:

      

    结论:

        通过HttpServlet httpServlet = new MyServlet();这行代码我们可以得知父类(HttpServlet )的引用指向子类(MyServlet)的对象、那么这个对象本身是子类对象、所以此处的this代表的是子类MyServlet对象(实例)

        通过httpServlet.service();因为个方法里面有两个隐式参数this,super(不知道的同学可以看前面)所以所调用的方法均基于this指向的当前对象为基础来调用的。

    如有任何疑问可联系邮箱: 给我发邮件、或直接联系QQ:1584875179 || 点返回首页

  • 相关阅读:
    Spring-10-AOP先验知识之代理模式
    Spring-09-使用Java的方式配置Spring
    Spring-08-使用注解开发
    Spring-07-Bean自动配置
    Spring-06-依赖注入(DI)
    Spring-05-配置之别名、bean、import
    Spring-04-IOC创建对象的方式
    Spring-02-IOC理论推导
    Spring-01-初见spring
    h5
  • 原文地址:https://www.cnblogs.com/aeon/p/9976950.html
Copyright © 2020-2023  润新知