類其實就是一個模板,比如說類就好比一張房子的設計圖紙,或者說是一個倒印模具,創建一個類就好比設計一張圖紙,刻一個模板。對象就好比一座建好的房子,一個成型的模型,無疑想要一座房子或一個模型都先需要一張圖紙和一個模板,而這就是類和對象的關係。
相關免費學習推薦:java基礎教學
首先Java裡面的類別由關鍵字class定義,類別中的元素稱為:成員屬性。類別中的函數稱為:成員方法。
class Person { public int age;//成员属性 实例变量 public String name; public String sex; public void eat() {//成员方法 System.out.println("吃饭!"); } public void sleep() { System.out.println("睡觉!"); }}
如下就是定義一個類別
class Person { public String name; public String sex; public int age; //....人的属性}
然後拿這個類別建立一個對象,然後我們可以透過點號. 來存取這個物件的成員,看下圖
Person person = new Person();//实例化一个对象
可以看到在沒有賦值之前是會預設賦值為型別相對應的0值。
類型 | 對應的0值 |
---|---|
整數 | 0 |
浮點型 | 0.0 |
#字元類型r | /u0000 |
引用類型 | null |
註:這裡之所以有預設的0值,是因為他們都是成員變量,不屬於局部變量,所以有預設值,局部變數需要自己賦值才能使用。
所謂的類別變數也就是靜態變量,由關鍵字static修飾,儲存在方法區,在類別載入的時候就會分配空間,所以類別變數是脫離物件的,就是說,就算沒有實例化物件也是可以使用類別變數的,看下圖,沒有物件依然可以透過類別名稱.變數名稱 使用類別變數
同樣的,由static修飾的方法也是類別方法也叫靜態方法,它和類別變數具有相同的性質,類別載入時分配空間,不依賴實例化的對象,可以直接透過類別名稱.函數名() 呼叫。
如果不是靜態的變數和方法,那麼我們就需要先透過new關鍵字實例化一個物件才可以使用。
在類別的定義中有許多的存取權修飾符,而public和private是兩個最常使用的,顧名思義,public修飾的變數是公開的,所謂的公開就是說可以直接訪問,舉個栗子
當我們使用public修飾成員變數時可以正常使用,透過點號訪問物件的成員,但是當我們使用private修飾的時候,就會報錯,因為private是私有的,只能在目前類別裡面使用,不能被外部引用。
如果要其他類別中需要使用的話就需要提供公開的接口,給需要使用的類別調用,簡單來講就是,我寫個公開的方法,你把資料透過方法傳給我,我自己來操作,例如以下方法,看名字也能知道這些方法的作用,我們來使用一下這些方法
可以看到,透過公開的接口我們可以對私有的成員變數進行一系列的操作,細心的小夥伴們可能會發現在setName等等方法裡面都出現了this.變數名稱那麼這個是什麼呢,this其實是一個關鍵字,表示當前方法的引用,那麼為什麼要有這個關鍵字呢,那是因為當變數名稱相同時,局部變數有限使用,可能會導致無法賦值等情況,看下圖,當去掉this之後,名字明顯為初始值,這就是因為局部變數優先使用的原因,導致類別裡面的成員變數沒有被賦值。
1.建議實作類別的時候將成員變數盡量設定為private屬性,防止資料被直接竄改,而方法非必要公開的介面也設定為private屬性的,具體根據實際情況來定
2.變數名稱和方法名稱使用小駝峰命名規則,盡量做到見名知意,做不到應該給上適當的中文註釋,幫助其他人理解程式碼的意思
3.static修飾的程式碼和程式碼區塊優先於任何程式碼執行
4.一個類別可以創建多個對象,很好理解,一張圖紙可以建造多棟相同的房子,例如小區的樓房就是一張圖紙建造出來的
5.在實例化一個物件的時候會調用一個構造方法,所謂的構造方法就一個名字與類名相同的方法,可以帶參數,沒有回傳值類型聲明,並且如果你沒有定義的話,編譯器就會自動實作一個不帶參數的建構方法,如果你定義了,那麼編譯器就不會自動產生。而構造方法也是支援重載的,構造方法的用處之一就是可以在創建物件的時候就進行賦值。
加上一句this.name ,就可以不需要setname了,只需要創建物件的時候,直接傳參即可,其他的部落客就不在贅述了。
以上就是博主這段時間的學習內容,今天分享就到這裡了,如果文章中有表達不清楚或者表述有錯誤的地方歡迎評論或者私信指出,部落客會及時處理,好了這篇部落格就到此結束了,我們下篇部落格見。
#本文轉載自:https://blog.csdn.net/JunFengYiHan/article/details/116066556
作者:JunFengYiHan
以上是重點詳解Java類別和對象的詳細內容。更多資訊請關注PHP中文網其他相關文章!