一、什麼是物件導向?怎麼理解物件導向?
1.物件導向的三個特點:
a) 物件導向就是一種常見的思想,符合人們的思考習慣。
b) 物件導向的出現,將複雜的問題簡單化。
c) 物件導向的出現,讓程靜在過程中的執行者,變成了物件中的指揮者。
2.類和物件的區別
類:明確該事物的屬性和行為並定義在其中。
物件:其實就是該類事務實實在在純在的個體——>new出來的
總的來說,類與物件之間的關係:
類就是事物的描述,物件是該類事物的例項
3.成員變數和區域性變數的區別:
成員變數<–>屬性, 成員函式<–>行為
a)成員變數定義在類中,正各類眾都可以訪問;
區域性變數定義在函式,語句,區域性**塊中,只在所屬的區域有效。
b)成員變數存在於堆記憶體的物件中;
區域性變數存在於棧記憶體的方法中。
c)成員變數隨著物件的建立而存在,隨著物件的消失而消失;
區域性變數隨著所屬區域的執行而存在, 隨著所屬區域的結束而釋放。
d)成員變數都有預設初始化值;
區域性變數沒有預設初始化值。
4.匿名物件
new person().方法/變數
用途:a) 當物件對方法僅進行一次呼叫的時候,就可以簡化成匿名物件
b) 匿名物件可以作為實際引數進行傳遞
二、封裝
1.概念:
是指隱藏物件的屬性和實現細節,僅對外提供公共的訪問方式。
故事:多**教室有電腦,大家上課進門呢就可以使用(普通修飾符下的類中全域性變數)。但是老師覺得不安全,誰都可以進來,電腦不丟了麼?!那老師就想了乙個辦法,把門拆了換成牆(全部變成private)。。。哎!電腦丟不了了,但是同學們進不去了(訪問不了用不上了)。因此老師改進了一下,不拆牆,給門加把鎖(屬性方法),這樣目的就達到了(封裝也就誕生了)。
2.好處:
a) 安全性提高
b) 便於使用
c) 提高重用性
d) 將變化隔離
3.原則
將不需要對外提供的內容都隱藏起來,把屬性都隱藏,提供公共方法對其訪問。
三、this關鍵字
1.概念
this:代表物件。代表哪個物件呢?當前物件。而this就是所在函式所屬物件的引用。
簡單說:哪個物件呼叫了this所在的函式,this就代表哪個物件。
2.應用場景
a) 當區域性變數名與成員變數重名,可以用關鍵字this來區分
b) this(name),其中name是string變數,該表示式用來表示呼叫含有引數string的建構函式,注意要放在另外建構函式的第一句。
四、static關鍵字
1.用途:
用於修飾成員(成員變數和陳冠函式)
2.特點:
隨著類的載入而載入;
優先於物件存在;
被所有物件所共享;
多了一種呼叫方式,可以直接被類名呼叫——> 類名.靜態成員
注意事項:
靜態方法只能訪問靜態成員
靜態方法中不可以寫this,super等關鍵字
主函式main(string args)是靜態的
3.成員變數和靜態變數的區別?
a) 兩個變數的生命週期不同。
成員變數隨著物件的建立而存在,隨著物件的被**而釋放;
靜態變數隨著類的載入而存在,隨著類的消失而消失。
b) 呼叫方式不同。
成員變數只能被物件呼叫。
靜態變數可以被物件呼叫,還可以被類名呼叫。
c) 別名不通。
成員變數 也成為例項變數。
靜態變數 也成為類變數。
d) 資料儲存位置不同。
成員變數資料儲存在堆記憶體的物件中,所以也叫物件的特有資料。
靜態變數資料儲存在方法區(共享資料區)的靜態區當中,所以也叫物件的共享資料。
4.靜態什麼時候用?
aa) 靜態變數:
當分析物件中所具備的成員變數的值都是相同的—>>>這時這個成員就可以被靜態修飾。
只要這個資料在物件中都是不同的,就是物件的特有資料,必須儲存在物件中,是非靜態的。
如果是相同的資料,物件不需要做修改,只需要使用即可,不需要儲存在物件中
bb) 靜態函式:
函式是否用靜態修飾,就參考一點,就是該函式功能是否有訪問到物件中的特有資料。
簡單點說,從源**看,該功能是否需要訪問非靜態的成員變數,如果需要,該功能就是非靜態的。
如果不需要,就可以將該功能定義成靜態的。
當然,也可以定義成非靜態,但是非靜態需要被物件呼叫,而僅建立物件呼叫非靜態的
沒有訪問特有資料的方法,該物件的建立時沒有意義的。
5.靜態**塊
aa) 啥是靜態**塊?
//靜態**塊》沒有名字的static修飾符修飾的**塊
static
bb) 特點
不需要呼叫,生成類自動執行;只執行一次
cc) 作用
用於給類進行初始化,因為不是所有類都會建立物件,不一定建立建構函式
6.構造**塊
aa) 啥是構造**塊?
class person
}bb) 特點
前面啥也沒有,就一對兒大括號cc) 與靜態**塊的區別:構造物件時觸發,可以給所有物件進行初始化的。
與建構函式的區別:建構函式是給對應的物件進行針對性的初始化
而構造**塊具有通用性。
靜態**塊:最先執行,呼叫類就觸發且只觸發一次
構造**塊:跟著執行,但早於建構函式。有物件才執行,有幾個物件執行幾次。
js物件導向程式設計一 封裝
js是物件導向程式設計的語言,既是它的函式,陣列,屬性都是物件,可以設定物件的屬性和方法。一.生成物件的原始模式 假定把貓看成乙個物件,它有name和color兩個屬性.var cat 現在,我們需要根據這個原型物件的規格,生成兩個例項物件.var cat1 建立乙個空物件 cat1.name 大毛...
一 封裝(C物件導向開發)
內容參考於 抽象接 術和元件開發規範及其思想 在c語言中,可以使用乙個c檔案 c 檔案 和 件完 h 檔案 成 類 的定義,將所有需要封裝的東西都存於c 檔案中,h 檔案中只展現那些對外可見 無需封裝 重點 的內容。1.示例1 乙個棧物件的例子。stack.h ifndef stack h defi...
java物件導向特徵之一 封裝與隱藏
使用者對類內部定義的屬性 物件的成員變數 的直接操作會導致資料錯誤,混亂或安全性問題。解決方法 將類的屬性保護起來,防止亂用。保護的方式 資訊隱藏 當建立了類的物件以後,如果直接通過 物件.屬性 的方式對相對應的物件屬性賦值的話,可能會出現於實際情況相違背的意外,故,不考慮讓物件來直接作用於屬性,而...