zoukankan      html  css  js  c++  java
  • 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 || 点返回首页

  • 相关阅读:
    windows内核中对于索引*4(内存)的一个反汇编知识点
    任务段与任务门
    中断门与陷阱门
    调用门
    Visual Studio 调试系列2 基本调试方法
    Visual Studio 调试系列1 Debug 与 Release 模式
    Visual Studio 调试(系列文章)
    C#各版本新增加功能(系列文章)
    C#8.0 中使用默认接口成员更新接口
    C#8.0 新增功能
  • 原文地址:https://www.cnblogs.com/aeon/p/9976950.html
Copyright © 2011-2022 走看看