基本概念、對象和類、構(gòu)造器、static

(基本概念、對象和類、構(gòu)造器、static)

一、基本概念

面向?qū)ο笫?b>站在對象的角度思考問題,把多個功能合理的放到不同對象里,強(qiáng)調(diào)的是具備某些功能的對象。具備某種功能的實體,稱為對象。面向?qū)ο笞钚〉某绦騿卧?類.

面向?qū)ο笕筇卣鳎?/b>

1:封裝(Encapsulation):將對象的實現(xiàn)細(xì)節(jié)隱藏起來,通過公共的方法來向外暴露該對象的功能。

2:繼承(Inheritance):子類繼承父類,子類是一種特殊的父類,能直接或間接獲得父類里的成員。

3:多態(tài)(Polymorphism):直接把子類對象賦給父類變量,但是運(yùn)行時依然表現(xiàn)出子類的行為特征,這意味著同一類型的對象在運(yùn)行時可能表現(xiàn)出不同的行為特征。

千萬不要誤解為面向?qū)ο笠欢ň蛢?yōu)于面向過程的設(shè)計

簡單的說:編碼是人的工作,面向?qū)ο蟾舆m合人,而面向過程更適合計算機(jī)。

二、對象和類

對象可以定義成包含狀態(tài)和行為的一個實體,對象(object)也稱為實例(instance)。

具有相同特性(狀態(tài))和行為(功能)的對象的抽象就是類。

對象是類的實例,類是對象的模板。

類具有特性,對象的狀態(tài),用成員變量來描述,封裝數(shù)據(jù)。

類具有功能,對象的行為,用方法來描述。

1、類相關(guān)

類定義

類的全限定名稱: 包名.類名;

2、對象

1):根據(jù)類來創(chuàng)建對象的語法:? ? 類名? 變量? =? new? 類名();

2):給字段設(shè)置值:????????????????????????對象變量.字段名 = 該類型的值;

3):獲取字段的值:????????????????????????該字段類型? 變量 = 對象變量.字段值;

4):通過對象調(diào)用方法. ? ? ? ? ? ? ? ?對象變量.方法(實參);


對象實例化過程

對象的打印和比較對象以及匿名對象和對象的生命周期:

-------------------------------------------------------------

1):對象的打印操作:

? ? 打印對象的時候,打印出來的效果,如:Servant@3294e4f4.

? ? 類的名稱@十六進(jìn)制的hashCode.

? ? 其實,我們打印對象,往往關(guān)系的是該對象中的數(shù)據(jù)是多少,期待講解Obejct的toString方法.

2):對象比較操作:

? ? ==號:對于基本數(shù)據(jù)類型來說,比較的是值.

? ? ? ? ? ? ? 對于引用數(shù)據(jù)類型來說,比較的是在內(nèi)存中的地址值.

? ? ? ? ? ? ? ? 每次使用new關(guān)鍵字,都表示在堆值新開辟一塊內(nèi)存空間,不同的內(nèi)存空間,地址值不同.

? ? 需求:如果對象擁有完全相同的數(shù)據(jù),我就想讓他們相等. 期待:Object的equals方法.

3):對象的生命周期:

? ? 對象什么時候出生:每次使用new關(guān)鍵字的時候,就會在內(nèi)存開辟新的空間,此時對象開始存在.

? ? 對象的結(jié)束:當(dāng)堆中的對象,沒有被任何變量所引用,此時該對象就成了垃圾,就等著垃圾回收器(GC)來回收該垃圾,當(dāng)被回收的時候,對象被銷毀了,回收垃圾的目的,釋放更多的內(nèi)存空間.

4):匿名對象: 沒有名稱的對象,創(chuàng)建對象之后沒有賦給某一個變量.

? ? ? new Servant();//匿名對象,匿名對象只是在堆中開辟一塊新的內(nèi)存空間,但是沒有把該空間地址賦給任何變量.

? ? ? 因為沒有名稱,匿名對象僅僅只能使用一次,一般的,把匿名對象作為方法的實參傳遞.

三、構(gòu)造器

構(gòu)造器:如果我們沒有顯示提供構(gòu)造器,則編譯器在編譯時創(chuàng)建一個缺省的構(gòu)造器.

但是,如果我們顯示定義了一個構(gòu)造器,則編譯器不再創(chuàng)建默認(rèn)構(gòu)造器.

構(gòu)造器是一種特殊的方法,也可以存在重載.

四、static

static修飾的資源屬于類級別,而不是對象級別。

static修飾符的特點:

1):static修飾的成員(字段/方法),隨著所在類的加載而加載. 當(dāng)JVM把字節(jié)碼加載進(jìn)JVM的時候,static修飾的成員已經(jīng)在內(nèi)存中存在了.

2):優(yōu)先于對象的存在. 對象是我們手動通過new關(guān)鍵字創(chuàng)建出來的.

3):satic修飾的成員被該類型的所有對象所共享. 根據(jù)該類創(chuàng)建出來的任何對象,都可以訪問static成員.

表面上通過對象去訪問static成員,其本質(zhì)依然使用類名訪問,和對象沒有任何關(guān)系(通過反編譯看到的).

4):直接使用類名訪問static成員 因為static修飾的成員直接屬于類,不屬于對象,所以可以直接使用類名訪問static成員.

什么時候定義成static的字段和方法:

? 如果這個一個狀態(tài)/行為屬于整個事物(類),就直接使用static修飾. 被所有對象所共享.

? 在開發(fā)中,往往把工具方法使用static修飾.(工具對象只需要一份即可,把該類設(shè)計為單例的)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容