Java學習記錄三
①面向物件思想
概述:當需求單一,或者簡單時,我們一步一步去操作沒問題,並且效率也挺高。可隨著需求的更改,功能的增多,發現需要面對每一個步驟很麻煩了,這時就開始思索,能不能把這些步驟和功能在進行封裝,封裝時根據不同的功能,進行不同的封裝,功能類似的封裝在一起。這樣結構就清晰了很多。用的時候,找到對應的類就可以了。這就是面向物件的思想。接下來我們看看面向物件到底是什麼?
注:•面向物件是基於面向過程的程式設計思想
1)面向物件的思想特點:
•是一種更符合我們思想習慣的思想
•可以將複雜的事情簡單化
•將我們從執行者變成了指揮者
2)面向物件開發
•
3)面向物件設計
•其實就是在管理和維護物件之間的關係。
4)面向物件特徵
•封裝(encapsulation)
•
•多型(polymorphism)
5)類與物件的關係
我們如何表示一個現實世界事物呢:
•屬性 就是該事物的描述資訊
•行為 就是該事物能夠做什麼
Java中用class描述事物也是如此
•成員變數 就是事物的屬性
•成員方法 就是事物的行為
類:是一組相關的屬性和行為的集合 Student.java
物件:是該類事物的具體體現 new Student();
6)物件記憶體圖。
成員變數和區域性變數的區別
在類中的位置不同
•成員變數 類中方法外
•區域性變數 方法內或者方法宣告上
在記憶體中的位置不同
•成員變數 堆記憶體
•區域性變數 棧記憶體
生命週期不同
•成員變數 隨著物件的存在而存在,隨著物件的消失而消失
•區域性變數 隨著方法的呼叫而存在,隨著方法的呼叫完畢而消失
初始化值不同
•成員變數 有預設的初始化值
•區域性變數 沒有預設的初始化值,必須先定義,賦值,才能使用。
7)形式引數的問題
基本型別作為形式引數 ----->值的傳遞,本身不受影響
引用型別作為形式引數 ------>表達的是共同管理,本身是受影響的
8)匿名物件:沒名字的物件,物件的一種簡化形式。
使用場景:
•物件呼叫方法僅僅一次的時候
•作為實際引數傳遞
9)封裝概述: •是指隱藏物件的屬性和實現細節,僅對外提供公共訪問方式。
好處:
•隱藏實現細節,提供公共的訪問方式
•提高了程式碼的複用性
•提高安全性。
封裝原則:
•將不需要對外提供的內容都隱藏起來。
•把屬性隱藏,提供公共方法對其訪問。
private 和 this
•被private修飾的成員只在本類中才能訪問。 •提供對應的getXxx()/setXxx()方法
this:代表所在類的物件引用
10)構造方法:成員變數是有預設初始化,太大眾,通過構造可以有特點一些。
構造方法作用概述
•給物件的資料進行初始化
構造方法格式
•方法名與類名相同
•沒有返回值型別,連void都沒有
•沒有具體的返回值
構造方法注意事項
•如果你不提供構造方法,系統會給出預設構造方法
•如果你提供了構造方法,系統將不再提供
•構造方法也是可以過載的
11)成員方法
方法具體劃分:
•根據返回值
•有明確返回值方法
•返回void型別的方法
•根據形式引數
•無參方法
•帶參方法
12)類的初始化
Student s = new Student();在記憶體中做了哪些事情?
•載入Student.class檔案進記憶體
•在棧記憶體為s開闢空間
•在堆記憶體為學生物件開闢空間
•對學生物件的成員變數進行預設初始化 -------->堆記憶體為成員變數賦的預設值
•對學生物件的成員變數進行顯示初始化 -------->這裡大概是值程式碼塊、靜態程式碼塊之類的初始化
•通過構造方法對學生物件的成員變數賦值 -------->構造初始化,只要通過構造初始化,就是有效的。
•學生物件初始化完畢,把物件地址賦值給s變數
13)static關鍵字
可以修飾成員變數和成員方法
static關鍵字特點
•隨著類的載入而載入
•優先於物件存在
•被類的所有物件共享
•可以通過類名呼叫
static關鍵字注意事項
•在靜態方法中是沒有this關鍵字的
•靜態方法只能訪問靜態的成員變數和靜態的成員方法
靜態記憶體圖
靜態變數和成員變數之間的區別。
所屬不同
•靜態變數屬於類,所以也稱為為類變數
•成員變數屬於物件,所以也稱為例項變數(物件變數)
記憶體中位置不同
•靜態變數儲存於方法區的靜態區
•成員變數儲存於堆記憶體
記憶體出現時間不同
•靜態變數隨著類的載入而載入,隨著類的消失而消失
•成員變數隨著物件的建立而存在,隨著物件的消失而消失
呼叫不同
•靜態變數可以通過類名呼叫,也可以通過物件呼叫
•成員變數只能通過物件名呼叫
14)製作幫助文件
•javadoc -d 存放目錄 -author -version ArrayTool.java
15)如何使用幫助文件
看這個類的結構(需不需要導包)
•成員變數 欄位
•構造方法 構造方法
•成員方法 方法
16)程式碼塊
•在Java中,使用{}括起來的程式碼被稱為程式碼塊,根據其位置和宣告的不同,可以分為區域性程式碼塊,構造程式碼塊,靜態程式碼塊,同步程式碼塊(多執行緒講解)。
•區域性程式碼塊
•在方法中出現;限定變數生命週期,及早釋放,提高記憶體利用率
•構造程式碼塊
•在類中方法外出現;多個構造方法方法中相同的程式碼存放到一起,每次呼叫構造都執行,並且在構造方法前執行
•靜態程式碼塊 在類中方法外出現,加了static修飾
•在類中方法外出現,並加上static修飾;用於給類進行初始化,在載入的時候就執行,並且值執行一次。