落紅不是無情物,化作春泥更護花。
點贊再來,養成習慣。
文章目錄
1.成員變量
2.this關鍵字
3.隱藏和封裝
4.static關鍵字
學習目標
成員變量
類的成員變量和類變量區別:
類的成員分爲屬性和方法,屬性其實就是類的成員變
量,也稱爲全局變量,除了類的成員變量外,類的方法也
可以聲明變量,我們稱局部變量。
類中的成員變量在整個類範圍都可以使用,包括類中的方法而方法中定義的局部變量作用域只能在方法中使用。
成員變量分爲類屬性和實例屬性兩種,定義屬性時沒有加Static修飾符修飾的就是實例屬性,代表該類的每個對象都擁有該屬性。而加了static修飾的屬性稱爲類屬性,屬於類所有,整個項目中僅此一份,屬於共享使用。
語法
[ <修飾符> ] [ static ] [ final ] <變量類型> <變量名>
(1)static:表示一個類的成員變量,即靜態成員變量。
(2)final:表示是一個常量。
示例代碼:
this關鍵字
this關鍵字和方法調用:
在類的定義時通過this關鍵字可訪問到該類的實例屬性,this其實就個指向當前類的對象的地址。最大的作用:讓類中的個方法訪問該類中的另個方
法或實例成員變量。
通過THIS關鍵字來解決成員變量和局部變量同名的問題
- this :代表當前對象的引用(誰調用就代表誰)。
- this.成員變量 ‐‐ 本類的
- this.成員方法名() ‐‐ 本類的
- this(…) ‐‐ 本類的構造方法
示例:
隱藏和封裝
類的成員封裝:
封裝是面向對象三大特徵之一,封裝的主要意思:將該隱藏的隱藏,該開放的開發
封裝目的是提高項目中屬性或方法的安全性,隱藏內部實現細節。
JAVA中的封裝可以實現以下目的:
- 1.隱藏類的實現細節
- 2.讓使用者能通過事先預定的方法訪問數據
- 3.可以對數據進行檢查提高數據的可用性
- 4.便於修改,提高代碼的可維護性
原則
將屬性隱藏起來,若需要訪問某個屬性,提供公共方法對其訪問。
封裝的步驟
(1) 使用 private 關鍵字來修飾成員變量。
(2) 對需要訪問的成員變量,提供對應的一對 getXxx 方法 、 setXxx 方法。
封裝的操作——private關鍵字
private的含義
(1) private是一個權限修飾符,代表最小權限。
(2)可以修飾成員變量和成員方法。
(3) 被private修飾後的成員變量和成員方法,只在本類中才能訪問。
private的使用格式
private 數據類型 變量名 ;
1 . 使用 private 修飾成員變量,代碼如下:
2 . 提供 getXxx 方法 / setXxx 方法,可以訪問成員變量,代碼如下:
封裝優化1——this關鍵字
this的含義
this代表所在類的當前對象的引用(地址值),即對象自己的引用。
記住 :方法被哪個對象調用,方法中的this就代表那個對象。即誰在調用,this就代表誰。
this使用格式
this.成員變量名;
3 .使用 this 修飾方法中的變量,解決成員變量被隱藏的問題,代碼如下:
小貼士:方法中只有一個變量名時,默認也是使用 this 修飾,可以省略不寫。
封裝優化2——構造方法
當一個對象被創建時候,構造方法用來初始化該對象,給對象的成員變量賦初始值。
小貼士:無論你與否自定義構造方法,所有的類都有構造方法,因爲Java自動提供了一個無參數構造方法, 一旦自己定義了構造方法,Java自動提供的默認無參數構造方法就會失效。
構造方法的定義格式
構造方法的寫法上,方法名與它所在的類名相同。它沒有返回值,所以不需要返回值類型,甚至不需要void。使用 構造方法後,代碼如下
注意事項
1 . 如果你不提供構造方法,系統會給出無參數構造方法。
2 . 如果你提供了構造方法,系統將不再提供無參數構造方法。
3 . 構造方法是可以重載的,既可以定義參數,也可以不定義參數。
標準代碼——JavaBean(擴展)
JavaBean 是 Java語言編寫類的一種標準規範。符合 JavaBean 的類,要求類必須是具體的和公共的,並且具有無 參數的構造方法,提供用來操作成員變量的 set 和 get 方法。
編寫符合 JavaBean 規範的類,以學生類爲例,標準代碼如下:
測試類,代碼如下:
static關鍵字
概述
關於 static 關鍵字的使用,它可以用來修飾的成員變量和成員方法,被修飾的成員是屬於類的,而不是單單是屬 於某個對象的。也就是說,既然屬於類,就可以不靠創建對象來調用了。
類變量
當 static 修飾成員變量時,該變量稱爲類變量。該類的每個對象都共享同一個類變量的值。任何對象都可以更改 該類變量的值,但也可以在不創建該類的對象的情況下對類變量進行操作。
類變量:使用 static關鍵字修飾的成員變量。
定義格式:
示例:比如說,基礎班新班開班,學員報到。現在想爲每一位新來報到的同學編學號(sid),從第一名同學開始,sid爲 1,以此類推。學號必須是唯一的,連續的,並且與班級的人數相符,這樣以便知道,要分配給下一名新同學的學 號是多少。這樣我們就需要一個變量,與單獨的每一個學生對象無關,而是與整個班級同學數量有關。
所以,我們可以這樣定義一個靜態變量numberOfStudent,代碼如下:
靜態方法
當 static 修飾成員方法時,該方法稱爲類方法 。靜態方法在聲明中有 static ,建議使用類名來調用,而不需要 創建類的對象。調用方式非常簡單。
類方法:使用 static關鍵字修飾的成員方法,習慣稱爲靜態方法。
定義格式:
靜態方法調用的注意事項:
- 靜態方法可以直接訪問類變量和靜態方法。
- 靜態方法不能直接訪問普通成員變量或成員方法。反之,成員方法可以直接訪問類變量或靜態方法。
- 靜態方法中,不能使用this關鍵字。
小貼士:靜態方法只能訪問靜態成員。
調用格式
被static修飾的成員可以並且建議通過類名直接訪問。雖然也可以通過對象名訪問靜態成員,原因即多個對象均屬 於一個類,共享使用同一個靜態成員,但是不建議,會出現警告信息。
格式:
調用演示,代碼如下:
靜態原理圖解
static 修飾的內容:
- 是隨着類的加載而加載的,且只加載一次。
- 存儲於一塊固定的內存區域(靜態區),所以,可以直接被類名調用。
- 它優先於對象存在,所以,可以被所有對象共享。
靜態代碼塊
- 靜態代碼塊:定義在成員位置,使用static修飾的代碼塊{ }。
- 位置:類中方法外。
- 執行:隨着類的加載而執行且執行一次,優先於main方法和構造方法的執行。
格式:
作用:給類變量進行初始化賦值。用法演示,代碼如下:
小貼士:static 關鍵字,可以修飾變量、方法和代碼塊。在使用的過程中,其主要目的還是想在不創建對象的情況 下,去調用方法。
Arrays類,Math類兩個工具類,能體現static 方法的便利。
學習目標
- 能夠說出成員變量和局部變量的區別
- 能夠理解private關鍵字的含義
- 能夠說出this關鍵字可以解決的問題
- 能夠理解構造方法的含義
- 能夠用封裝的思想定義一個標準類
- 能夠理解static關鍵字
- 能夠寫出靜態代碼塊的格式
- 【微信公衆號】星沅傳
- 願你和我一起成長-星沅
- 持續《面向對象(Java程序設計)》的學習
- 會持續更新後面的學習