- /*
- 面向對象特徵,類的變量和方法,封裝,構造函數,this關鍵字
- */
- 3.1.1理解面向對象
- 。面向對象是相對面向過程而言
- 。面向對象和麪向過程都是一種思想.
- 。面向過程,強調的是功能行爲
- 。面向對象,將功能進行封裝,強調具備了功能的對象
- 。面向過程是基於面向過程的
- 舉例,把大象放進冰箱裏。找畢老師買電腦。
- 比較牛的一句話,萬物皆對象。屬於境界。
- 寫程序時,先定義對象。再封裝功能。
- 沒有對象自己造一個對象,再封裝功能。
- 人開門,名詞提煉法。
- 人{
- 開門(門)
- {
- 門.開();
- }
- }
- 門
- {
- 開(){操作門軸等}
- }
- 面向對象:三個特徵:封裝,繼承,多態。
- //找對象,建立對象,使用對象,維護對象的關係。
- 類和對象的關係。
- 類就是:對現實生活中事物的描述。
- 對象:就是這類事物,實實在在存在的個體。
- 描述事物其實就是在描述事物的屬性和行爲。
- 屬性對應是類中的變量,行爲對應類中的方法。
- class Car
- {
- String color = "紅色";//車顏色
- int num = 4;//輪胎數
- void run() //行爲
- {
- System.out.println(color +"..."+num);
- }
- }
- class CarDemo
- {
- public static void main(String[] args)
- {
- //生產汽車,在java中通過new 操作符完成。
- //就是在堆內存中產生一個對象。
- Car c = new Car();//c就是類類型變量,指向對象
- //將已有車的顏色改成藍色,指揮對象做事,方式:對象。對象成員
- c.color = "blue";
- c.run();
- Car c1 = new Car();
- c1.run();
- }
- }
- 成員變量和局部變量
- 作用範圍:
- 成員變量作用於整個類。
- 局部變量作用於方法中,或語句中
- 在內存中的位置,
- 成員變量:在堆內存中,因爲對象的存在,纔在內存中存在。
- 局部變量:存在棧內存中。
- 3.2.6 匿名對象
- 匿名對象是對象的簡化形式
- 匿名對象兩種使用情況
- 當對對象方法僅進行一次調用的時候
- 匿名對象可以作爲實際參數進行傳遞
- 注意:每new一個就是創建一個新對象。
- 3.3 封裝(Encapsulation)
- 封裝是指隱藏對象的屬性和實現細節,僅對外提供公共訪問方式
- 好處:將變化隔離
- 便於使用
- 提高重用性
- 提高安全性
- 封裝原則:
- 將不需要對外提供的內容都隱藏起來
- 把屬性都隱藏,提供公共方法對其訪問。
- 關鍵字
- private:私有修飾符,用於修飾類中的成員(如成員變量和成員函數)
- 私有後,只在本類中有效。
- 注意:私有隻是封裝的一種表現形式。
- p.age=-20;
- p.setAge() = -40;
- 這二個不是一樣的嗎?
- 不一樣,我們可以在setAge()中先進行邏輯判斷。對訪問的數據進行操作,
- 提高代碼的健壯性。
- 堆內存中的成員變量都有初始化值。自己初始化。
- 局部變量要自己賦值才能參與運算。
- 3.4構造函數
- 特點:
- 1.函數名與類名相同
- 2.不定義返回值類型(void 都不用)
- 3.不可以寫return語句
- 作用:給對象進行初始化,
- 注意:1默認構造函數的特點
- 當一個類中沒有定義構造函數時,那麼系統會默認給該類加入一個空參數
- 的構造函數。。。當在類中自定義了構造函數後,默認構造函數就沒有了。
- 2.多個構造函數是以重載的形式存在。
- 構造函數是在對象一建立就運行,給對象初始化
- 而一般方法是對象調用才執行,是給對象添加對象具備的功能。
- 一個對象建立,構造函數只運行一次。
- 而一般方法可以被該對象調用多次。
- 什麼時候定義構造函數呢?
- 當分析事物時,該事物存在具備一些特性或者行爲,那麼將這些內容定義
- 在構造函數中。
- 構造代碼塊。直接寫在類裏的 { } 和構造函數並行。
- 作用:給對象進行初始化,對象一建立就運行,而且優先於構造函數運行。
- 和構造函數的區別:
- 構造代碼塊是給所有對象進行統一初始化。所有的共性初始化內容。
- 構造函數是給特定對象指點初始化。
- 私有化所有構造函數,我們就建立不了對象。(單例模式)
- this關鍵字。 1. 用於區分局部變量和成員變量同名的情況。
- this代表的是什麼呢?
- 哪個對象調用this所在函數,this就代表哪個對象。
- this的應用:當定義類中的功能時,該函數內部要用到調用該函數的對象時,
- 這時用this表示這個對象。
- 2.this在構造函數間的可以互相調用。
- 構造函數不能直接調用構造函數,要用this(name);
- 注意:this語句只能放在構造函數的第一行。
面向對象特徵,類的變量和方法,封裝,構造函數,this關鍵字
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.