溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

JavaSE的類和對象是什么

發(fā)布時間:2022-03-29 13:43:39 來源:億速云 閱讀:115 作者:小新 欄目:開發(fā)技術(shù)

這篇文章主要介紹了JavaSE的類和對象是什么,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

    1.基本概念

    首先我們需要弄清楚幾個概念:面向?qū)ο笫鞘裁?、類是什么、對象又是什么?還是逐個來說

    1.1面向?qū)ο?/h4>

    我們常說Java是面向?qū)ο蟮恼Z言,C語言是面向過程的語言,那面向?qū)ο笫鞘裁?,它和面向過程的區(qū)別在哪?

    面向?qū)ο笫墙鉀Q問題的一種思想,其核心是依靠對象之間的交互來解決事情

    至于面向?qū)ο蠛兔嫦蜻^程的區(qū)別,假設(shè)現(xiàn)在有一道數(shù)學(xué)題:

    面向過程:你自己進(jìn)行手算,你需要關(guān)注套用什么公式,如何化簡、哪些條件組合可以推出什么結(jié)論等,中間有一個環(huán)節(jié)出錯都不行

    面向?qū)ο?/strong>:你把問題給計算機(jī),讓計算機(jī)解決,我們關(guān)注的只是人和計算機(jī)這兩個對象如何交互

    這么看面向?qū)ο蠛孟癖让嫦蜻^程更高級,但其實二者沒有好與壞之分,它們都有自己專門的應(yīng)用場景,就比如數(shù)學(xué)考試的時候題目你就只能自己寫( ̄▽ ̄)

    1.2類和對象

    • 類:對一個實體的描述

    • 對象:類的實例化

    假設(shè)你要設(shè)計某個東西,類就是你所畫的圖紙,對象則是你通過圖紙造出來的實物;一個類可以產(chǎn)生多個對象

    2.類的定義及使用

    2.1定義

    在定義類的時候需要使用一個關(guān)鍵字:class

    具體語法如下:

    class ClassName {
        field;
        method;
    }
    • ClassName:類名

    • field:成員變量

    • method:成員方法

    我們現(xiàn)在定義一個類Book,里面成員變量包括書名、作者和價格,成員方法就是打印所有成員變量

    JavaSE的類和對象是什么

    文章后面的概念都會圍繞這個類來進(jìn)行講解 

    2.2類的實例化

    在main方法中實例化一個對象用到的關(guān)鍵字:new

    代碼如下:

    Book book1 = new Book();

    之后便可以使用“.”來訪問類中的成員變量和成員方法,如下:

    JavaSE的類和對象是什么

    之前我們說過Java中的變量都要初始化,類里面的成員變量也不例外,如果成員變量未初始化,那么默認(rèn)是對應(yīng)的數(shù)據(jù)類型的0值

    整型變量是0,浮點數(shù)是0.0,布爾類型為false,引用類型為null,char為'\u0000' 

    3.this引用

    3.1訪問成員變量

    我們現(xiàn)在往類里面再增加一個方法setBook,用這個方法來對成員變量進(jìn)行初始化

    public void setBook(String name,String author,int price) {
            name=name;
            author=author;
            price=price;
        }

    我們再來看一下結(jié)果:

    JavaSE的類和對象是什么

     為什么全部都是0值?

    其原因在于方法的參數(shù)名和成員變量名相等,形參因為數(shù)局部變量,所以程序認(rèn)為方法里面的name等變量全部都是形參

    我們只需要將等號左邊的變量加上this就可以解決這個問題

    JavaSE的類和對象是什么

    this代表的是當(dāng)前對象的引用(誰調(diào)用了this,誰就是當(dāng)前對象)

    上圖中book1調(diào)用的setBook方法,所以 book1是當(dāng)前對象,方法中的this.name等變量就相當(dāng)于告訴程序這個不是方法的形參,而是對象book1的成員變量

    3.2訪問成員方法

    這個比較好理解,就是在方法里面引用類中的其它方法,但注意一點:引用不能成環(huán)

    假設(shè)setBook里面引用了show方法,那么show方法里面就不能再引用setBook,否則就亂套了

    還有一點需要補(bǔ)充:

    上面提到過一個類可以產(chǎn)生多個對象,那么多個對象調(diào)用同一個方法,程序如何分辨是哪個對象調(diào)用的?

    依舊是this引用

    類中的方法起始都有一個隱式的this參數(shù),通過this知道是哪個對象調(diào)用的方法,也就是說setBook方法其實是有4個參數(shù),如下:

    public void setBook(Book this,String name,String author,int price) {
            this.name=name;
            this.author=author;
            this.price=price;
        }

    除了訪問成員方法外,this還可以調(diào)用本類其它構(gòu)造方法,這一點在構(gòu)造方法中再介紹

    3.3this引用的特性

    1.只能在成員方法中使用

    2.是成員方法的第一個隱藏的參數(shù)

    3.在成員方法中只能引用當(dāng)前對象(在對象Book1中使用this就只能引用Book1,不能引用對象Book2)

    4.為對應(yīng)類的類型引用,即哪個對象調(diào)用就是哪個對象的引用類型

    4.構(gòu)造方法

    構(gòu)造方法也是成員方法,但它比較特殊,對象的初始化除了在main方法中使用“.”一個一個初始化外還可以使用構(gòu)造方法

    在實例化一個對象的時候一定會經(jīng)過兩個步驟:

    • 分配內(nèi)存

    • 調(diào)用合適的構(gòu)造方法

    如果用戶沒有寫構(gòu)造方法,編譯器會默認(rèn)提供一個不帶參數(shù)的構(gòu)造方法,寫了就調(diào)用用戶自己寫的構(gòu)造方法

    4.1構(gòu)造方法的特點

    • 方法名要和類名相同

    • 沒有返回值,即使是寫void也不行

    • 在整個對象的聲明周期內(nèi)只能調(diào)用一次

    • 可以重載

    我們寫一個構(gòu)造方法如下:

     public Book(String name, String author, int price) {
            this.name = name;
            this.author = author;
            this.price = price;
        }

    那么初始化對象如下:

    JavaSE的類和對象是什么

    4.2this在構(gòu)造方法中使用

    上面提到構(gòu)造方法可以重載,那么我們再寫一個沒有參數(shù)的構(gòu)造方法

     public Book() {
       
        }

    this在構(gòu)造方法中可以調(diào)用其它的構(gòu)造方法,比如我在沒有參數(shù)的構(gòu)造方法中調(diào)用上面的有三個參數(shù)的構(gòu)造方法

    JavaSE的類和對象是什么

    注意:

    • this同樣不能成環(huán)

    • this必須放在構(gòu)造方法的第一行

    感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“JavaSE的類和對象是什么”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!

    向AI問一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI