• 阶段1 语言基础+高级_1-2 -面向对象和封装_8两个对象使用同一个方法的内存



    两个对象在main方法里面调用
    新建一个Demo02PhoneTwo类,复制之前的代码到这里

    这里创建了一个Two对象

    one对象是苹果
    two对象。把参数改成三星。


    内存里又发生了什么事,这次不一样的地方是有两个对象

    程序要想执行,main方法先进栈,

    main进栈后就要逐行的执行。首先第一行我们创建了对象叫做one。

    这就是一个局部变量,名称中保存的是一个地址的值,谁的地址呢?堆的,凡事new出来的都在堆当中

    成员变量过来以后会有默认值

    接下来是成员方法,成员方法很特殊。为什么特殊?他所保存的实际上是地址的值?谁的地址的值呢?是右侧的,在方法区中的地址值。看下面绿色箭头的指向

    自己的地址是0X666.自己的地址就赋值交给one去处理。看红色箭头的指向。。根据这个地址能找到这个对象。

    下面就是赋值的操作,苹果 8388.0 、黑色。默认值已经被修改为指定的数值

    再往后就是调用两个方法call和sendMessage这两个方法

    one通过红色找到这个对象,再通过绿色找到对应的方法


    显示蓝色的箭头部分,call方法进栈。给谁打电话?乔布斯。然后调用方法,调用后 看差号。立马出栈


    然后是sendMessage方法,红色、绿色、进栈、蓝色、调用方法

    第二个对象

    里面的成员方法的地址和第一个对象的地址是一样的

    看有色绿色的箭头

    0x999给对象two赋值

    主要看下面橙色的箭头

    修改变量的值

    调用最下面的红色框内的 call方法和sendMessage方法。通过橙色箭头找对对象。再通过绿色箭头找到方法。




    two如果不是重新new 的对象


  • 相关阅读:
    vue响应式原理之Observer、Dep、Watcher
    vscode 常用插件
    脚手架搭建vue项目
    搭建框架
    select 自匹配问题
    Winform 根据Point截图并保存到指定路径
    C# Screen 类(多屏幕开发)
    C# WindowsService安装与卸载
    WebService WSDL动态访问
    C# 操作ini文件
  • 原文地址:https://www.cnblogs.com/wangjunwei/p/11194677.html
Copyright © 2020-2023  润新知