面向物件程式設計練習(開篇)
阿新 • • 發佈:2018-12-18
今天無意中看到了一些關於面向物件程式設計的練習題,私以為很是不錯,摘錄其中較有代表性的幾道,供大家學習。
一.面向物件三大特性,各有什麼用處?
1.繼承:解決程式碼的複用性問題
2.封裝:對資料屬性嚴格控制,隔離複雜度
3.多型性:增加程式的靈活性和可擴充套件性
二.類的屬性和物件的屬性有什麼區別?
首先,我們需要理解一個概念,python中一切皆物件,所以類本身也是一個物件。因此,此題還可理解為類物件與其他物件的區別。類屬性僅是與類有關的資料值,和普通物件屬性不同,類屬性與例項物件屬性無關。這些值像靜態成員那樣被引用,即使在多次例項化中呼叫類,它們的值都保持不變,不管如何,靜態成員不會因為例項而改變它們的值,除非在例項化中顯式的改變。
此例中,之所以會出現列印結果的不同,是因為例項化過程中顯式的改變了靜態變數的值(黃底色)。
三.類和物件在記憶體中是如何儲存的?
類以及類的方法在記憶體中只有一份,根據類建立的物件在記憶體中各有屬於自己的一份。
根據類建立物件時,物件中除了封裝name和age等的屬性外,還會儲存一個類物件的指標,指標指向當前物件的類。
當通過物件執行類中的方法時,類物件指標會找到類中的方法,將物件作為引數,傳給類方法中的第一個引數 'self'.