在我們寫**的時候經常會涉及兩種角色:類的實現者和類的呼叫者.
封裝的本質就是讓類的呼叫者不必太多的了解類的實現者是如何實現類的, 只要知道如何使用類就行了.
這樣就降低了類使用者的學習和使用成本, 從而降低了複雜程度.
private/ public 這兩個關鍵字表示 「訪問許可權控制」 .
被 public 修飾的成員變數或者成員方法, 可以直接被類的呼叫者使用.
被 private 修飾的成員變數或者成員方法, 不能被類的呼叫者使用.
alt + insert(快捷鍵)
注意事項
getname 即為 getter 方法, 表示獲取這個成員的值.
setname 即為 setter 方法, 表示設定這個成員的值.
當set方法的形參名字和類中的成員屬性的名字一樣的時候,如果不使用this, 相當於自賦值. this 表示當前例項
的引用.
構造方法是一種特殊方法, 使用關鍵字new例項化新物件時會被自動呼叫, 用於完成初始化操作.
new 執行過程
為物件分配記憶體空間
呼叫物件的構造方法
語法規則
1.方法名稱必須與類名稱相同
2.構造方法沒有返回值型別宣告
3.每乙個類中一定至少存在乙個構造方法(沒有明確定義,則系統自動生成乙個無參構造)
class
person
//帶有3個引數的建構函式
public
person
(string name,
int age,string ***)
public
void
show()
}public
class
main
}// 執行結果
name: caocao age:
10 ***: 男
name: zhangfei age:
80 ***: 男
注意事項
如果類中沒有提供任何的建構函式,那麼編譯器會預設生成乙個不帶有引數的建構函式
若類中定義了構造方法,則預設的無參構造將不再生成.
構造方法支援過載. 規則和普通方法的過載一致.
this表示當前物件引用(注意不是當前物件). 可以借助 this 來訪問物件的字段和方法.
class
person
//這兩個建構函式之間的關係為過載。
public
person
(string name,
int age,string ***)
public
void
show()
}public
class
main
}// 執行結果
name: bit age:
12 ***: man
普通**塊:定義在方法中的**塊.
構造塊:定義在類中的**塊(不加修飾符)。也叫:例項**塊。構造**塊一般用於初始化例項成員變數。
注意事項: 例項**塊優先於建構函式執行。
靜態**塊: 使用static定義的**塊。一般用於初始化靜態成員屬性。
注意事項:
靜態**塊不管生成多少個物件,其只會執行一次,且是最先執行的。
靜態**塊執行完畢後, 例項**塊(構造塊)執行,再然後是建構函式執行。
同步**塊:(多執行緒部分)
乙個類可以產生無數的物件,類就是模板,物件就是具體的例項。
類中定義的屬性,大概分為幾類:類屬性,物件屬性。其中被static所修飾的資料屬性稱為類屬性, static修飾的
方法稱為類方法,特點是不依賴於物件,我們只需要通過類名就可以呼叫其屬性或者方法。
靜態**塊優先例項**塊執行,例項**塊優先建構函式執行。
this關鍵字代表的是當前物件的引用。並不是當前物件。
類和物件簡析
一 類和物件概念 1。為什麼用物件導向的程式設計?2。物件導向的方法的功能特性?真實建模 可重用性 輕鬆更改 以不同的形式存在 3。什麼是物件 物件是乙個實體,可以有物理邊界。它有以下幾個特性 狀態 行為 身份 4。什麼是類?類包括一組共享結構和行為的物件。類是具有公共行為和屬性的物件的集合 5。類...
《類和物件》 析構函式
概念 前面通過建構函式的學習,我們知道乙個物件時怎麼來的,那乙個物件又是怎麼沒呢的?析構函式 與建構函式功能相反,析構函式不是完成物件的銷毀,區域性物件銷毀工作是由編譯器完成的。而 物件在銷毀時會自動呼叫析構函式,完成類的一些資源清理工作。特性 析構函式是特殊的成員函式。其特徵如下 析構函式名是在類...
HashMap特點和原始碼刨析 map遍歷
特點 1 存值是無序的 2 鍵和值都可以為null 但是 鍵是能是乙個為null 3 鍵的位置是惟一的,底層的資料結構控制鍵的 4 jdk1.8之前是 鍊錶 陣列 jdk1.8之後是鍊錶 陣列 紅黑樹 5 閥值 8 並且陣列長度大於64,才能將鍊錶轉換為黑紅樹,變成黑紅樹的目的是為了高效的查詢 當物...