面向对象编程练习(开篇)
今天无意中看到了一些关于面向对象编程的练习题,私以为很是不错,摘录其中较有代表性的几道,供大家学习。
一.面向对象三大特性,各有什么用处?
1.继承:解决代码的复用性问题
2.封装:对数据属性严格控制,隔离复杂度
3.多态性:增加程序的灵活性和可扩展性
二.类的属性和对象的属性有什么区别?
首先,我们需要理解一个概念,python中一切皆对象,所以类本身也是一个对象。因此,此题还可理解为类对象与其他对象的区别。类属性仅是与类有关的数据值,和普通对象属性不同,类属性与实例对象属性无关。这些值像静态成员那样被引用,即使在多次实例化中调用类,它们的值都保持不变,不管如何,静态成员不会因为实例而改变它们的值,除非在实例化中显式的改变。
此例中,之所以会出现打印结果的不同,是因为实例化过程中显式的改变了静态变量的值(黄底色)。
三.类和对象在内存中是如何保存的?
类以及类的方法在内存中只有一份,根据类创建的对象在内存中各有属于自己的一份。
根据类创建对象时,对象中除了封装name和age等的属性外,还会保存一个类对象的指针,指针指向当前对象的类。
当通过对象执行类中的方法时,类对象指针会找到类中的方法,将对象作为参数,传给类方法中的第一个参数 'self'.