zoukankan      html  css  js  c++  java
  • 类涉及的空间关系及组合(可变项地址面)

    定义类的语句执行结束就会占有自己的空间

    其中储存着属于类的静态属性和方法名所对应的内存地址(调用这个方法则寻到这个地址并执行)

    对象实例化,开在独立开辟一个属于这个对象的空间,这个对象空间里最开始只有类对象指针(指向这个对象所属的类),

    实例化之后,自动执行构造函数:将此这个对象传给self,空间内新增了通过构造函数封装的一系列值.对象空间储存方法存的是函数名和对应的内存地址

    对象调用方法或静态属性的顺序是:

    先找对象空间,再找类指针的对应的类空间,再找父类……

    类是模板,通过类名是找不到对象空间的值的

    对象是由模板而来,可以找的到类的属性方法,但是只能找,不能修改(此处有坑)

    类可以修改类的静态对象,但是,对象不能,一旦执行改形式的语句只会给对象的空间内添加属性,与类无关。

    面试题(坑)

    如果是对于类的一个内容可变的属性进行操作,对于可变的内容是可以通过对象名进行一系列增删改操作的.

    以列表为例,类内对应属性储存的是这个列表的地址值,对其增删改会改变列表的内容但是不会改变列表的地址,

    也就是说实际上并没有改变类空间,变得是这个地址对应的内容.而这个内容并没有存在类空间里.

    同样,这里的重点是这个地址对应的内容是可变的,如果该地址对应于一个不可变的"alex",

    那么通过对象名试图对其进行修改只会在空间里行开辟一个地址,且保存在对象的空间里,与类无关。

    组合的定义:给一个类的对象封装一个属性,这个属性是另一个类的对象。

                         前一个类在具有了这个本身就是另外一个类的属性之后,便可以通过访问这个属性来调用对应类中的方法和属性了.

                         避免了一些面对对象程序设计时,主体的错误.

  • 相关阅读:
    比较器 Comparable 与compartor 的区别及理解
    事务特性、事务隔离级别、spring事务传播特性
    分布式文件上传-FastDFS
    spring-cloud 组件总结以及搭建图示 (六)
    springCloud zuul网关(五)
    hashCode与equals 通过面试题一窥究竟
    【原】那年30岁
    【原】Hyper-V虚拟机设置外部网络访问
    【原】win10 .net framework 3.5安装
    【原】做梦有感
  • 原文地址:https://www.cnblogs.com/shachengcc1/p/11135365.html
Copyright © 2011-2022 走看看