您好,登錄后才能下訂單哦!
這篇文章主要介紹了JavaSE的類和對象是什么,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
首先我們需要弄清楚幾個概念:面向對象是什么、類是什么、對象又是什么?還是逐個來說
我們常說Java是面向對象的語言,C語言是面向過程的語言,那面向對象是什么,它和面向過程的區別在哪?
面向對象是解決問題的一種思想,其核心是依靠對象之間的交互來解決事情
至于面向對象和面向過程的區別,假設現在有一道數學題:
面向過程:你自己進行手算,你需要關注套用什么公式,如何化簡、哪些條件組合可以推出什么結論等,中間有一個環節出錯都不行
面向對象:你把問題給計算機,讓計算機解決,我們關注的只是人和計算機這兩個對象如何交互
這么看面向對象好像比面向過程更高級,但其實二者沒有好與壞之分,它們都有自己專門的應用場景,就比如數學考試的時候題目你就只能自己寫( ̄▽ ̄)
類:對一個實體的描述
對象:類的實例化
假設你要設計某個東西,類就是你所畫的圖紙,對象則是你通過圖紙造出來的實物;一個類可以產生多個對象
在定義類的時候需要使用一個關鍵字:class
具體語法如下:
class ClassName { field; method; }
ClassName
:類名
field
:成員變量
method
:成員方法
我們現在定義一個類Book,里面成員變量包括書名、作者和價格,成員方法就是打印所有成員變量
文章后面的概念都會圍繞這個類來進行講解
在main方法中實例化一個對象用到的關鍵字:new
代碼如下:
Book book1 = new Book();
之后便可以使用“.”來訪問類中的成員變量和成員方法,如下:
之前我們說過Java中的變量都要初始化,類里面的成員變量也不例外,如果成員變量未初始化,那么默認是對應的數據類型的0值
整型變量是0,浮點數是0.0,布爾類型為false,引用類型為null,char為'\u0000'
我們現在往類里面再增加一個方法setBook,用這個方法來對成員變量進行初始化
public void setBook(String name,String author,int price) { name=name; author=author; price=price; }
我們再來看一下結果:
為什么全部都是0值?
其原因在于方法的參數名和成員變量名相等,形參因為數局部變量,所以程序認為方法里面的name等變量全部都是形參
我們只需要將等號左邊的變量加上this就可以解決這個問題
this代表的是當前對象的引用(誰調用了this,誰就是當前對象)
上圖中book1調用的setBook方法,所以 book1是當前對象,方法中的this.name等變量就相當于告訴程序這個不是方法的形參,而是對象book1的成員變量
這個比較好理解,就是在方法里面引用類中的其它方法,但注意一點:引用不能成環
假設setBook里面引用了show方法,那么show方法里面就不能再引用setBook,否則就亂套了
還有一點需要補充:
上面提到過一個類可以產生多個對象,那么多個對象調用同一個方法,程序如何分辨是哪個對象調用的?
依舊是this引用
類中的方法起始都有一個隱式的this參數,通過this知道是哪個對象調用的方法,也就是說setBook方法其實是有4個參數,如下:
public void setBook(Book this,String name,String author,int price) { this.name=name; this.author=author; this.price=price; }
除了訪問成員方法外,this還可以調用本類其它構造方法,這一點在構造方法中再介紹
1.只能在成員方法中使用
2.是成員方法的第一個隱藏的參數
3.在成員方法中只能引用當前對象(在對象Book1中使用this就只能引用Book1,不能引用對象Book2)
4.為對應類的類型引用,即哪個對象調用就是哪個對象的引用類型
構造方法也是成員方法,但它比較特殊,對象的初始化除了在main方法中使用“.”一個一個初始化外還可以使用構造方法
在實例化一個對象的時候一定會經過兩個步驟:
分配內存
調用合適的構造方法
如果用戶沒有寫構造方法,編譯器會默認提供一個不帶參數的構造方法,寫了就調用用戶自己寫的構造方法
方法名要和類名相同
沒有返回值,即使是寫void也不行
在整個對象的聲明周期內只能調用一次
可以重載
我們寫一個構造方法如下:
public Book(String name, String author, int price) { this.name = name; this.author = author; this.price = price; }
那么初始化對象如下:
上面提到構造方法可以重載,那么我們再寫一個沒有參數的構造方法
public Book() { }
this在構造方法中可以調用其它的構造方法,比如我在沒有參數的構造方法中調用上面的有三個參數的構造方法
注意:
this同樣不能成環
this必須放在構造方法的第一行
感謝你能夠認真閱讀完這篇文章,希望小編分享的“JavaSE的類和對象是什么”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。