1. 程式人生 > >面向物件程式設計練習(開篇)

面向物件程式設計練習(開篇)

 

    今天無意中看到了一些關於面向物件程式設計的練習題,私以為很是不錯,摘錄其中較有代表性的幾道,供大家學習。

    一.面向物件三大特性,各有什麼用處?

    1.繼承:解決程式碼的複用性問題

    2.封裝:對資料屬性嚴格控制,隔離複雜度

    3.多型性:增加程式的靈活性和可擴充套件性

    二.類的屬性和物件的屬性有什麼區別?

    首先,我們需要理解一個概念,python中一切皆物件,所以類本身也是一個物件。因此,此題還可理解為類物件與其他物件的區別。類屬性僅是與類有關的資料值,和普通物件屬性不同,類屬性與例項物件屬性無關。這些值像靜態成員那樣被引用,即使在多次例項化中呼叫類,它們的值都保持不變,不管如何,靜態成員不會因為例項而改變它們的值,除非在例項化中顯式的改變。

    

    

    此例中,之所以會出現列印結果的不同,是因為例項化過程中顯式的改變了靜態變數的值(黃底色)。

    三.類和物件在記憶體中是如何儲存的?

    類以及類的方法在記憶體中只有一份,根據類建立的物件在記憶體中各有屬於自己的一份。

    根據類建立物件時,物件中除了封裝name和age等的屬性外,還會儲存一個類物件的指標,指標指向當前物件的類。

    當通過物件執行類中的方法時,類物件指標會找到類中的方法,將物件作為引數,傳給類方法中的第一個引數 'self'.