物件導向思維方式是一種更符合人們思考習慣的思想
面向過程思維方式中更多的體現的是執行者(自己做事情),物件導向中更多的體現是指揮者(指揮物件做事情)。
物件導向思維方式將複雜的問題簡單化。
如把大象放進冰箱需要三部:1.開啟冰箱 2.把大象放進去 3.關上冰箱
而物件導向的思想冰箱和大象都是乙個物件實體,開門、關門和放大象都是冰箱具有的功能,用大象建立的物件呼叫該功能即可
描述冰箱
public void refrigerator()
public static void 關門(){}
public static void 放象(string 大象){}
}
可以看出類的真正意義就是在描述事物。
屬性和功能統稱為事物中的成員,分別叫成員屬性(變數)和成員功能(方法)
首先執行main函式,進入棧中,新建乙個物件(為引用型別,儲存的位址指向堆中的car的屬性和方法)
呼叫car中的run方法,run()進入棧---->列印
在上圖中,可以將玩具模型看作是乙個類,將乙個個玩具看作物件,從玩具模型和玩具之間的關係便可以看出類與物件之間的關係。
類用於描述這些模型的共同特徵(具有何種屬性和功能),物件相當於乙個事物實體,有具體的屬性值,也造就不同物件之間的差異
類是用於描述事物的,類中可以定義事物的屬性和行為。而物件是通過描述的這個類,使用new關鍵字建立出來,通過物件就可以呼叫該物件具體的屬性和功能了。
定義在類中的變數是成員變數
定義在方法中或者{}語句裡面的變數是區域性變數
成員變數儲存在堆記憶體的物件中
區域性變數儲存在棧記憶體的方法中
成員變數隨著物件的出現而出現在堆中,隨著物件的消失而從堆中消失
區域性變數隨著方法的執行而出現在棧中,隨著方法的彈棧而消失
成員變數因為在堆記憶體中,所有預設的初始化值
區域性變數沒有預設的初始化值,必須手動的給其賦值才可以使用。
當基本型別變數作為引數傳遞時,若未返回值,則原來變數中儲存的資料不會發生改變,這是因為方法執行完便隨著彈棧而消亡
當引用變數作為引數傳遞時,這時其實是將引用變數空間中的記憶體位址(引用)複製了乙份傳遞給了show方法的d引用變數。這時會有兩個引用同時指向堆中的同乙個物件。(改變了堆中的值)
物件導向共有三個特徵:封裝,繼承,多型
從以上兩點得出結論,封裝的好處:
機箱:一台電腦,它是由cpu、主機板、顯示卡、記憶體、硬碟、電源等部件組長,其實我們將這些部件組裝在一起就可以使用電腦了,但是發現這些部件都散落在外面,很容造成不安全因素,於是,使用機箱殼子,把這些部件都裝在裡面,並在機箱殼上留下一些插口等,若不留插口,大家想想會是什麼情況。
類中不需要對外提供的內容都私有化,包括屬性和方法。
以後再描述事物,屬性都私有化,並提供set*** get***方法對其進行訪問。(私有化、並提供介面)
呼叫類方法時,若給了其引數,又在方法體中申明了一樣的引數,那麼方法使用哪個引數呢?
答案是就近原則使用方法體內的引數,若想讓方法體使用傳入的引數,可以使用this關鍵字
036 物件導向 09
一 概念部分 靜態變數 在類中,用static宣告的成員變數為靜態變數 也叫類變數 類屬性 二 靜態變數的特點 1.它為該類的公用變數,屬於類,被該類的所有例項共享,在類被載入時被顯式初始化 2.對於該類的所有物件來說,static成員變數只有乙份。被該類的所有物件共享 3.可以使用 物件.類屬性 ...
09 物件導向之繼承
一 何為繼承?繼承 extends 讓類與類之間產生關係,字父類關係。二 繼承的好處和弊端 a 繼承的好處 a 提高了 的復用性 如果再有個豬的類,只需要直接繼承animal就可以用了 b 提高了 的維護性 如果要給動物加乙個屬性name,只需要在aniaml中新增name就行 c 讓類與類之間產生...
Python基礎 09 物件導向
1.基本格式和使用 類 class 類名 塊物件 物件名 類名 2.組成 2.屬性 特徵 例項屬性 修改 類外面 例項物件.屬性名 值 類裡面 self.屬性名 值 獲取 類外面 物件名.屬性名 類裡面 self.屬性名 類屬性 歸屬於類物件的屬性,所有物件共有的屬性 類屬性只能通過類物件修改,不能...