• 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 || 点返回首页

  • 相关阅读:
    二维数组最大子数组算法
    寻找最大子数组
    最大值bug 调试
    多路电梯调度算法
    分析一个文本文件各个词出现的频率,并把频率最高的十个词打印出来。
    使用redis实现生产者消费者模式
    简单使用redis实现sso单点登录
    MongoDB批量导入及简单的性能优化
    mysql安装
    字符串操作性能优化
  • 原文地址:https://www.cnblogs.com/aeon/p/9976950.html
Copyright © 2020-2023  润新知