类涉及的空间关系及组合

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

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

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

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

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

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

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

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

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

面试题(坑)

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

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

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

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

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

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

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

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

猜你喜欢

转载自www.cnblogs.com/shachengcc1/p/11135365.html
今日推荐