面向对象编程练习(开篇)

 

    今天无意中看到了一些关于面向对象编程的练习题,私以为很是不错,摘录其中较有代表性的几道,供大家学习。

    一.面向对象三大特性,各有什么用处?

    1.继承:解决代码的复用性问题

    2.封装:对数据属性严格控制,隔离复杂度

    3.多态性:增加程序的灵活性和可扩展性

    二.类的属性和对象的属性有什么区别?

    首先,我们需要理解一个概念,python中一切皆对象,所以类本身也是一个对象。因此,此题还可理解为类对象与其他对象的区别。类属性仅是与类有关的数据值,和普通对象属性不同,类属性与实例对象属性无关。这些值像静态成员那样被引用,即使在多次实例化中调用类,它们的值都保持不变,不管如何,静态成员不会因为实例而改变它们的值,除非在实例化中显式的改变。

    

    

    此例中,之所以会出现打印结果的不同,是因为实例化过程中显式的改变了静态变量的值(黄底色)。

    三.类和对象在内存中是如何保存的?

    类以及类的方法在内存中只有一份,根据类创建的对象在内存中各有属于自己的一份。

    根据类创建对象时,对象中除了封装name和age等的属性外,还会保存一个类对象的指针,指针指向当前对象的类。

    当通过对象执行类中的方法时,类对象指针会找到类中的方法,将对象作为参数,传给类方法中的第一个参数 'self'.

   

posted on 2018-12-18 21:20  地球上的小东西  阅读(250)  评论(0编辑  收藏  举报