Java 17 的類和物件
思維導圖
類是什麼?
類(class): 是構造物件的模版,我們可以將類想象成已經有的實物。比方說我們可以想象成製作棉花糖的機器, 可以製造棉花糖這個實體, 轉成類和物件來說, 棉花糖就是實體, 而製作這個實體, 在這裡可以稱為構造(construct)了一個棉花糖, 也就是說棉花糖物件的過程就是類的例項建立(instance)。
類的語法結構:
[修飾符] class 類名{
//定義的建構函式
//定義的變數
//定義的方法
}
通常類的修飾符包含: public, final, abstract, 這裡只是暫時的寫一些程式碼, 並不深入, 等著包管理講解之後, 在詳細說明修飾符的用法。
物件是什麼?
想要知道物件是什麼,物件是類的一個例項。 並且要了解物件的主要特徵。
物件的行為(behavior): 物件有哪些操作,也可以理解為操作物件的方法。
物件的狀態(state):當執行對應的操作的時候, 物件如何進行響應。根據方法做出改變。
物件的標識(identity):用來區分相同行為與狀態的不同物件的辨別。
Java 透過 new 關鍵字來呼叫構造器,從而返回對應類的例項。
類名 類變數 = new 類名();
構造器
構造器是一個類建立物件的方法,如果一個類沒有了構造器, 這個類就無法使用 new 的方式建立例項。 對於我們平常不寫構造器的時候, Java 會生成一個預設的構造器,但是如果我們在類中定義了構造器, Java 也就不會生成預設的構造器。
[修飾符] 構造器名([形參列表]){
//執行構造器的程式碼
}
這裡演示沒有任何構造器時, 反編譯 class 位元組碼檔案。可以看到沒有寫構造器的情況下生成的 .class 檔案中還是包含這個構造器的。
這裡演示一下, 如果寫了構造器會不會就不預設生成構造器了。
定義了一個帶有引數的構造器, 編譯程式碼發現, 預設的構造器並不會建立。 這裡就要注意, 在實際的開發中, 如果你需要預設的構造器和引數構造器, 就需要都進行顯式的指定。否則就無法使用預設的構造方法進行例項化類。
說了上面的類,物件和建構函式, 我們用現實中的例子來描述一下面向物件的方法和意義。
在面向物件中類和物件是最基本的組成單元。 類是表示客觀世界中的某類事物的抽象。物件表示一個具體的描述或者說是實體。比方說人這個抽象,可以描述 人 這個類 Person, 這個可以認為是一個抽象, 人都有一個唯一標識的身份, 比方說名字,年齡,性別。這些可以稱為人的標識(成員屬性),人又都有吃飯,睡覺,學習的相關行為(方法) 。學習的時候, 應該執行學習的行為, 睡覺的時候執行睡覺的行為。由人 Person 的抽象可以具體到某個人, 比方說張三同學。 張三同學是一個人。就可以具有人的所有特性。
以上的行為和抽象放到程式碼中的效果就是如下, 先定義一個人的類。
然後建立類的實體張三:
並把張三構造出來, 定義了一個年齡20, 性別為男的張三同學。
從上面的程式碼中我們看到了一個新的關鍵字 this。
this 關鍵字
可以簡單的理解 this 就是當前物件本身, 類中常用的是, 在方法中可以返回當前操作的物件。
例如:
class ThisDemo{
public ThisDemo test(){
return this;
}
}
當然也可以使用成員變數或者方法名。
private String name;
public String getName(){
return this.name;
}
方法名的呼叫如下:
this.getName();
在使用的時候, 在當前類預設可以省略 this,所以很多時候, 可以直接寫成 getName(); 下一篇內容, 方法和引數的在繼續加深這個學習。
上面的程式碼演示如下:
希望本章的內容給你一些學習上的幫助。
最後送給大家一句今日看到的學習技術的感覺不錯的句子:
時光荏苒,歲月如梭。每一個框架或者庫只能陪你走一段路,最終都會逝去。留在你心中的,不是一條一條的語法規則,而是一個一個的思想,這些思想才是推動進步的源泉。