溫馨提示×

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

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

Java對(duì)象與Java類的詳細(xì)介紹

發(fā)布時(shí)間:2021-08-02 09:12:33 來(lái)源:億速云 閱讀:150 作者:chen 欄目:開發(fā)技術(shù)

本篇內(nèi)容介紹了“Java對(duì)象與Java類的詳細(xì)介紹”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

目錄
  • 1.面向?qū)ο笫鞘裁?

  • 2.Java類

    • 1.什么是類

  • 2.Java類

    • 類的結(jié)構(gòu)

      • Java類的格式

  • 3.java對(duì)象

    • 4.類和對(duì)象

      • 5.類中的變量,方法

        • 1.變量分類

          • 成員變量:

          • 局部變量:

        • 2.方法分類

        • 6.方法重載

          • 7.對(duì)象與引用

            • 基本類型和引用類型的區(qū)別:

              • 值傳遞與引用傳遞

              • 8.static關(guān)鍵字

                • 概念

                  • static屬性

                    • static方法

                      • 代碼塊

                      • 9.類的加載執(zhí)行

                        • 10.包

                          • 包的概念:

                            • 包的作用:

                              • 包(package)的命名規(guī)范:

                                • 訪問(wèn)權(quán)限修飾符

                                • 11.面向?qū)ο笳Z(yǔ)言的三大特征

                                  • 1.封裝

                                    • 2.多態(tài)

                                      • 3.繼承

                                      • 12.類于類之間的關(guān)系

                                        • 1.關(guān)聯(lián)關(guān)系(has-a)

                                          • 2.依賴關(guān)系(uses-a)

                                            • 3.繼承關(guān)系(is-a)


                                          1.面向?qū)ο笫鞘裁?

                                          面向?qū)ο螅簅bject oriented programming 縮寫 OOP面向?qū)ο蟮木幊陶Z(yǔ)言

                                          • 以分類的方式進(jìn)行思考和解決問(wèn)題。

                                          • 面向?qū)ο笙葘?duì)整體關(guān)系作出分類,然后根據(jù)不同的類深入細(xì)節(jié)的處理。

                                          • 面向?qū)ο蟮乃枷敕先祟惖恼J(rèn)知習(xí)慣。

                                          我見過(guò)舉的最多的例子就是把大象放進(jìn)冰箱:

                                          面向?qū)ο蟮乃枷刖褪前堰@件事的三個(gè)步驟:打開冰箱,放入大象,關(guān)閉冰箱。這三個(gè)動(dòng)作倆個(gè)是關(guān)于冰箱的,一個(gè)是關(guān)于操作人的。所以就把打開冰箱,關(guān)閉冰箱這倆個(gè)操作定義在冰箱這個(gè)對(duì)象中,把放入大象定義在人這個(gè)對(duì)象中。于面向過(guò)程不同的就是在,面向過(guò)程關(guān)注的是正在發(fā)生什么事,面向?qū)ο箨P(guān)注的是發(fā)生這件事和誰(shuí)有關(guān)系。

                                          面向?qū)ο蟮某绦蚴怯蓪?duì)象組成的,每個(gè)對(duì)象包含對(duì)用戶公開的特定功能部分和隱藏的實(shí)現(xiàn)部分。

                                          ——Java核心技術(shù) 卷1(11版)

                                          注意

                                          面向?qū)ο鬅o(wú)法取代面向過(guò)程,他們是相輔相成的。面向?qū)ο箨P(guān)注于從宏觀上把握事物之間的關(guān)系,在具體到如何實(shí)現(xiàn)某個(gè)細(xì)節(jié)時(shí)(在類中定義一個(gè)方法),仍然采用面向過(guò)程的思維方式。

                                          對(duì)于一些規(guī)模較小的問(wèn)題,將它分解為過(guò)程的開發(fā)方式比較理想,面向?qū)ο蟮脑O(shè)計(jì)思想適用于規(guī)模較大的項(xiàng)目,把很多個(gè)過(guò)程轉(zhuǎn)換為較少的類,這更便于程序員管理,尋找錯(cuò)誤時(shí)與比較方便(假設(shè)一個(gè)數(shù)據(jù)出現(xiàn)了錯(cuò)誤,你只需要找訪問(wèn)這個(gè)數(shù)據(jù)的方法)。

                                          2.Java類

                                          1.什么是類

                                          類是構(gòu)造對(duì)象的模板或藍(lán)圖,我們可以將類想象成制作小甜餅的模具,將對(duì)象想象為小甜餅。

                                          ——Java核心技術(shù) 卷1(11版)

                                          也就是說(shuō):

                                          類就是將一類事物的相同的屬性,行為放在一起類是表示一個(gè)客觀世界某類群體的一些基本特征抽象

                                          2.Java類

                                          類的結(jié)構(gòu)

                                          變量:事物屬性的描述;

                                          方法:事物的行為;(可以做的事情)

                                          構(gòu)造方法:用于創(chuàng)建對(duì)象;(創(chuàng)建類的時(shí)候有一個(gè)默認(rèn)的無(wú)參的構(gòu)造方法)

                                          內(nèi)部類: 即在類體中聲明的類。

                                          塊:一段沒(méi)有名稱的代碼塊

                                          Java類的格式
                                          [訪問(wèn)權(quán)限修飾符]  [修飾符] class Person{
                                          //第一步聲明一個(gè)類
                                            /*訪問(wèn)修飾符有兩種public,無(wú)(默認(rèn))
                                            修飾符:final,abstract
                                            關(guān)鍵字class用來(lái)定義一個(gè)類
                                            Java類名的命名規(guī)范:
                                            類名首字母大寫,見名知意,駝峰表示*/
                                          //第二步給類添加屬性
                                              //成員變量定義
                                              /*
                                              [訪問(wèn)權(quán)限修飾符] [修飾符] 屬性類型 屬性名;
                                              */
                                              public String name; //名字
                                              public Integer age; //年齡
                                          //第二步給類添加方法
                                              /*方法聲明格式為:
                                              [訪問(wèn)權(quán)限修飾符] [修飾符] 返回值類型  方法名(){
                                               }*/
                                               public void eat(){
                                                   System.out.println("吃飯");
                                               }
                                          }

                                          3.java對(duì)象

                                          對(duì)象是類的一個(gè)實(shí)例,是以類為模板在內(nèi)存中創(chuàng)建的實(shí)際存在的實(shí)例

                                          上面舉得例子人就是一個(gè)類,我們每個(gè)人都是一個(gè)對(duì)象,擁有類中的屬性,行為,可以使用。

                                          對(duì)象的創(chuàng)建和使用:

                                          Person person = new Person();

                                          Person person:使用Person類作為類型聲明一個(gè)變量person(對(duì)象變量)。

                                          new Person():使用new + Person 類構(gòu)造方法創(chuàng)建對(duì)象.

                                          =:將右邊創(chuàng)建的對(duì)象地址 賦給 左邊的person變量

                                          使用person變量可以訪問(wèn)對(duì)象中的成員變量和成員方法.

                                          注意:

                                          1.同一類的每個(gè)對(duì)象有不同的成員變量存儲(chǔ)空間。

                                          2.同一類的每個(gè)對(duì)象共享該類的方法。

                                          要想使用對(duì)象,必須清楚對(duì)象的三個(gè)主要特征:

                                          1.對(duì)象的行為:可以對(duì)對(duì)象完成哪些操作,或者可以對(duì)對(duì)象應(yīng)用哪些方法。

                                          2.對(duì)象的狀態(tài):當(dāng)調(diào)用那些方法時(shí),對(duì)象會(huì)怎么樣。

                                          3.對(duì)象的標(biāo)識(shí):如何區(qū)分具有相同行為與狀態(tài)的不同對(duì)象。

                                          4.類和對(duì)象

                                          類是一類事物的抽象概念,是一個(gè)模型

                                          對(duì)象是由這個(gè)模型所創(chuàng)造的一個(gè)個(gè)具體存在的,實(shí)實(shí)在在存在的實(shí)例。

                                          所以創(chuàng)建對(duì)象的過(guò)程也叫實(shí)例化對(duì)象。

                                          編程中現(xiàn)有類后有對(duì)象。

                                          現(xiàn)實(shí)生活中先有對(duì)象后有類(相當(dāng)于根據(jù)對(duì)象,總結(jié)出來(lái)的類)。

                                          5.類中的變量,方法

                                          1.變量分類

                                          按照位置分

                                          成員變量:
                                          • 成員變量是定義在類中,方法體之外的變量。

                                          • 成員變量可以使用Java語(yǔ)言中任何一種數(shù)據(jù)類型(包括基本類型和引用類型)。

                                          • 在定義成員變量時(shí)可以對(duì)其初始化,如果不對(duì)其初始化,Java使用默認(rèn)的值對(duì)其初始化。

                                          • 成員變量在創(chuàng)建對(duì)象的時(shí)候會(huì)從類中復(fù)制一份到對(duì)象中。

                                          • 成員變量可以被類中方法、構(gòu)造方法和特定類的語(yǔ)句塊訪問(wèn)。

                                          • 成員變量的作用范圍為整個(gè)類體。

                                          局部變量:
                                          • 在方法、構(gòu)造方法或者語(yǔ)句塊中定義的變量被稱為局部變量。

                                          • 局部變量可以使用Java語(yǔ)言中任何一種數(shù)據(jù)類型(包括基本類型和引用類型)。

                                          • 局部變量在使用前必須初始化賦值。

                                          • 變量聲明和初始化都是在方法中,方法結(jié)束后,變量就會(huì)自動(dòng)銷毀。

                                          2.方法分類

                                          成員方法:成員方法是定義在類中。這種方法在創(chuàng)建對(duì)象的時(shí)候創(chuàng)建。

                                          語(yǔ)法格式:

                                          修飾符 返回值類型 方法名(參數(shù)列表) {
                                              方法體語(yǔ)句;
                                              [return 返回值]
                                          }

                                          構(gòu)造方法:用來(lái)創(chuàng)建對(duì)象的方法

                                          構(gòu)造方法名與類名相同,且沒(méi)有返回值,且不需要使用void修飾。

                                          構(gòu)造方法是定義在 Java 類中的一個(gè)用來(lái)創(chuàng)建對(duì)象的方法。

                                          使用 new + 構(gòu)造方法 創(chuàng)建一個(gè)新的對(duì)象。在創(chuàng)建一個(gè)對(duì)象的時(shí)候,至少要調(diào)用一個(gè)構(gòu)造方法。

                                          每個(gè)類都有構(gòu)造方法。如果沒(méi)有顯式地為類定義構(gòu)造方法,Java將會(huì)為該類提供一個(gè)默認(rèn)構(gòu)造方法,但是只要在一個(gè)Java類中定義了一個(gè)顯示的構(gòu)造方法后,默認(rèn)的無(wú)參構(gòu)造方法即失效。

                                          一個(gè)類可以有多個(gè)構(gòu)造方法。

                                          public class Person{ 
                                            public Person(){ 
                                            } 
                                            public Person(String name){ 
                                                // 這個(gè)構(gòu)造方法有一個(gè)參數(shù):name 
                                            } 
                                          }

                                          例:創(chuàng)建Person類的對(duì)象

                                          Person person= new Person();
                                          Person person = new Person("張三");

                                          6.方法重載

                                          方法的重載是指同一個(gè)類中具有相同的名字,但參數(shù)不同的幾個(gè)方法。

                                          參數(shù)不同(可以有三方面的不同)

                                          • 數(shù)量不同

                                          • 類型不同

                                          • 順序不同

                                          調(diào)用時(shí),會(huì)根據(jù)不同的參數(shù)表選擇對(duì)應(yīng)的方法。

                                          注意:方法重載跟方法的返回值類型沒(méi)有任何關(guān)系

                                          7.對(duì)象與引用

                                          Java 語(yǔ)言中除基本類型之外的變量類型都稱之為引用類型。

                                          Java中的對(duì)象是通過(guò)引用對(duì)其操作的。

                                           class Person{    
                                              String name;
                                              String age;
                                          }
                                          Person person= new Person();

                                          創(chuàng)建一個(gè)對(duì)象包含三個(gè)動(dòng)作:

                                          • 右邊的“new Person()”,是以Person類為模板,調(diào)用Person類的構(gòu)造方法,在堆空間里創(chuàng)建一個(gè)Person類對(duì)象。

                                          • 左邊的“Person person”創(chuàng)建了一個(gè)Person類型引用變量。所謂Person類的引用,就是以后可以用來(lái)指向Person對(duì)象的對(duì)象引用。

                                          • ”=”操作符使對(duì)象引用指向剛創(chuàng)建的那個(gè)Person對(duì)象。

                                          Person person;//對(duì)象引用變量
                                          person= new Person();//對(duì)象本身

                                          new Person(); 這個(gè)語(yǔ)句在堆空間里創(chuàng)建了實(shí)體,盡管它們也是確確實(shí)實(shí)存在的實(shí)體,但是,我們看不見,也摸不著。

                                          對(duì)象沒(méi)有名字,也就沒(méi)法直接訪問(wèn)它。我們需要通過(guò)對(duì)象引用來(lái)間接訪問(wèn)對(duì)象。

                                          對(duì)象好比是一只很大的氣球,但是我們抓不住它。引用變量是一根繩,可以用來(lái)系汽球。

                                          Person  person1; //創(chuàng)建一根繩子,一根還沒(méi)有系上任何一個(gè)氣球的繩;
                                          Person  person2;//又做了一根繩,還沒(méi)系上氣球,
                                          person1 = new Person();//給person1系上氣球;
                                          person2 = person1;//這里,發(fā)生了復(fù)制行為。要說(shuō)明的是,對(duì)象本身并沒(méi)有被復(fù)制,被復(fù)制的只是對(duì)象引用。

                                          結(jié)果是,person2也指向了person1所指向的對(duì)象。兩根繩系的是同一只氣球。

                                          基本類型和引用類型的區(qū)別:

                                          基本類型

                                          byte,short,int,long,float,double,char,boolean

                                          它的值就是一個(gè)數(shù)字,一個(gè)字符或一個(gè)布爾值.

                                          引用數(shù)據(jù)類型

                                          類,接口,數(shù)組

                                          它的值是對(duì)象在內(nèi)存空間中的地址,

                                          值傳遞與引用傳遞

                                          Java中進(jìn)行方法調(diào)用中傳遞參數(shù)時(shí),參數(shù)傳遞有兩種:

                                          1.值傳遞:(形式參數(shù)類型是基本數(shù)據(jù)類型):方法調(diào)用時(shí),實(shí)際參數(shù)把它的值傳遞給對(duì)應(yīng)的形式參數(shù),形式參數(shù)只是用實(shí)際參數(shù)的值初始化自己的存儲(chǔ)單元內(nèi)容,是兩個(gè)不同的存儲(chǔ)單元,所以方法執(zhí)行中形式參數(shù)值的改變不影響實(shí)際參數(shù)的值。

                                          2.引用傳遞:(形參數(shù)類型是引用數(shù)據(jù)類型參數(shù)):也稱為傳地址。方法調(diào)用時(shí),實(shí)際參數(shù)是對(duì)象,這時(shí)實(shí)際參數(shù)與形式參數(shù)指向同一個(gè)地址,在方法執(zhí)行中,對(duì)形式參數(shù)的操作實(shí)際上就是對(duì)實(shí)際參數(shù)的操作,這個(gè)結(jié)果在方法結(jié)束后被保留了下來(lái),所以方法執(zhí)行中形式參數(shù)的改變將會(huì)影響實(shí)際參數(shù)。

                                          基本類型傳遞的是該數(shù)據(jù)值本身。引用類型傳遞的是對(duì)對(duì)象的引用,而不是對(duì)象本身 。

                                          8.static關(guān)鍵字

                                          概念

                                          • static被稱為靜態(tài),可以用來(lái)修飾類的屬性,方法,代碼塊,內(nèi)部類。

                                          • 隨著類的加載而加載

                                          • 優(yōu)先于對(duì)象存在

                                          • 修飾的成員,被所有對(duì)象所共享

                                          • 可不創(chuàng)建對(duì)象,直接被類調(diào)用

                                          static屬性

                                          靜態(tài)屬性是類的所有對(duì)象共享的,不管創(chuàng)建了多少個(gè)對(duì)象,靜態(tài)屬性在內(nèi)存中只有一個(gè)。

                                          static方法

                                          可以使用對(duì)象調(diào)用,也可以直接用類名調(diào)用,建議用類名直接調(diào)用

                                          在static方法內(nèi)部只能訪問(wèn)類的static屬性,不能訪問(wèn)類的非static屬性,因?yàn)閟tatic屬性先加載。

                                          因?yàn)樵陬惣虞d的時(shí)候加載方法,非static屬性還沒(méi)有加載,如果在靜態(tài)方法中訪問(wèn)非static屬性,該屬性找不到。

                                          代碼塊

                                          代碼塊在類中聲明,類似一個(gè)沒(méi)有名稱的方法體(代碼塊),代碼分實(shí)例塊和靜態(tài)塊

                                          //實(shí)例塊:每次創(chuàng)建對(duì)象時(shí)自動(dòng)調(diào)用
                                          {
                                             //任何符合語(yǔ)法的Java代碼
                                          }
                                          //靜態(tài)塊:類加載時(shí)自動(dòng)調(diào)用,僅一次,與是否創(chuàng)建對(duì)象無(wú)關(guān)。  
                                          static {
                                              //任何符合語(yǔ)法的Java代碼
                                          }

                                          9.類的加載執(zhí)行

                                          Java對(duì)象與Java類的詳細(xì)介紹

                                          創(chuàng)建對(duì)象時(shí),先執(zhí)行靜態(tài)代碼塊,在執(zhí)行實(shí)例代碼塊,然后執(zhí)行構(gòu)造方法。

                                          10.包

                                          包的概念:

                                          包就相當(dāng)于一個(gè)文件夾

                                          包的作用:

                                          避免類重名

                                          按照不同功能管理類

                                          控制訪問(wèn)權(quán)限

                                          包(package)的命名規(guī)范:

                                          在包名中,可以使用 . 號(hào)來(lái)區(qū)分包的級(jí)別;包名一般情況下是小寫

                                          • 第一級(jí) 指該項(xiàng)目的類型,如com等,

                                          • 第二級(jí) 指項(xiàng)目所開發(fā)或者運(yùn)行的公司名稱,如:oracle,sun,huawei等

                                          • 第三級(jí) 指項(xiàng)目的名稱。

                                          • 第四級(jí) 指項(xiàng)目模塊的名稱。如:filter等表明這個(gè)包下類的功能

                                          包可以更好得管理邏輯相關(guān)的類,可以控制不同包之間的訪問(wèn)權(quán)限

                                          導(dǎo)入外部包的類,關(guān)鍵字import

                                          訪問(wèn)權(quán)限修飾符

                                          Java語(yǔ)言有個(gè)權(quán)限訪問(wèn)修飾符,權(quán)限從大到小依次為:

                                          • public :公共權(quán)限 修飾類、屬性、方法??梢员蝗我忸愒L問(wèn)

                                          • protected:受保護(hù)的權(quán)限 修飾屬性、方法??梢员煌愒L問(wèn),如果不是同包類,必須是該類的子類才可以訪問(wèn)。

                                          • default:同包權(quán)限 修飾類、屬性、方法。只能被同包的類訪問(wèn)

                                          • private:私有權(quán)限 修飾屬性、方法。 只能在本類中訪問(wèn)

                                          11.面向?qū)ο笳Z(yǔ)言的三大特征

                                          1.封裝

                                          封裝:有時(shí)稱之為數(shù)據(jù)隱藏,將類的某些信息隱藏在類內(nèi)部,不允許外部程序直接訪問(wèn),而是通過(guò)該類提供的方法來(lái)實(shí)現(xiàn)對(duì)隱藏信息的操作和訪問(wèn)

                                          好處:隱藏類的實(shí)現(xiàn)細(xì)節(jié),方便加入控制語(yǔ)句,方便修改實(shí)現(xiàn)

                                          具體表現(xiàn)是

                                          1.屬性使用private權(quán)限 (私有的)

                                          2.方法使用public權(quán)限

                                          例子:

                                          public class Person {    
                                              private String name;    
                                              private String age;    
                                              public String getName() {        
                                                  return name;    
                                              }    
                                              public void setName(String name) {        
                                                  this.name = name;   
                                              }   
                                              public String getAge() {        
                                                  return age;    
                                              }    
                                              public void setAge(String age) {        
                                                  this.age = age;    
                                              }
                                          }

                                          我們可以發(fā)現(xiàn)上述代碼用到了this關(guān)鍵字,那么什么是this關(guān)鍵字呢?

                                          this關(guān)鍵字代表自身類的對(duì)象

                                          功能:

                                          1.使用this關(guān)鍵字引用成員變量

                                          2.使用this關(guān)鍵字引用成員方法

                                          注意:

                                          this關(guān)鍵字必須放在非靜態(tài)方法里面

                                          在一個(gè)類的方法或構(gòu)造方法內(nèi)部,可以使用“this.成員變量名”這樣的格式來(lái)引用成員變量名,常常用來(lái)區(qū)分同名的成員變量和局部變量。

                                          例如上面的:

                                           this.name = name;   //把局部變量賦值給自己類的成員變量

                                          2.多態(tài)

                                          多態(tài)是同一個(gè)行為具有多個(gè)不同表現(xiàn)形式或形態(tài)的能力

                                          多態(tài)的優(yōu)點(diǎn)

                                          • 消除類型之間的耦合關(guān)系

                                          • 可替換性

                                          • 可擴(kuò)充性

                                          • 接口性

                                          • 靈活性

                                          • 簡(jiǎn)化性

                                          多態(tài)存在的三個(gè)必要條件

                                          • 繼承

                                          • 重寫

                                          • 父類引用指向子類對(duì)象:Parent p = new Child();(Child類繼承了Parent 類)

                                          當(dāng)使用多態(tài)方式調(diào)用方法時(shí),首先檢查父類中是否有該方法,如果沒(méi)有,則編譯錯(cuò)誤;如果有,再去調(diào)用子類的同名方法。

                                          多態(tài)的好處:可以使程序有良好的擴(kuò)展,并可以對(duì)所有類的對(duì)象進(jìn)行通用處理。

                                          public class Test {
                                              public static void main(String[] args) {
                                                  show(new Cat());  
                                                  show(new Dog());  
                                              }  
                                              public static void show(Animal a)  {
                                                  a.eat();  
                                                  // 類型判斷
                                                  if (a instanceof Cat)  {  
                                                      Cat c = (Cat)a;  //向下轉(zhuǎn)型
                                                      c.work();  
                                                  } else if (a instanceof Dog) { 
                                                      Dog c = (Dog)a;  
                                                      c.work();  
                                                  }  
                                          	}  
                                          }
                                          public abstract class Animal {  
                                              abstract void eat();  
                                          }  
                                          public class Cat extends Animal {  
                                              public void eat() {  
                                                  System.out.println("吃魚");  
                                              }  
                                              public void work() {  
                                                  System.out.println("抓老鼠");  
                                              }  
                                          }
                                          public class Dog extends Animal {  
                                              public void eat() {  
                                                  System.out.println("吃骨頭");  
                                              }  
                                              public void work() {  
                                                  System.out.println("看家");  
                                              }  
                                          }

                                          Test中的main方法輸出:

                                          Java對(duì)象與Java類的詳細(xì)介紹

                                          同一個(gè)方法在不同情況下的表現(xiàn)不同,就是多態(tài)的體現(xiàn)。

                                          3.繼承

                                          繼承:繼承是面向?qū)ο蟪绦蛟O(shè)計(jì)不可缺少的設(shè)計(jì)思想,是實(shí)現(xiàn)代碼可重用的根基,是提高代碼可擴(kuò)展性的主要途徑。

                                          繼承是從已有的類中派生出新的類,新的類能吸收已有類的屬性和行為,并能擴(kuò)展新的能力。

                                          • 在JAVA中使用extends關(guān)鍵字來(lái)表示繼承關(guān)系。

                                          • JAVA不支持多繼承,單繼承使JAVA的繼承關(guān)系很簡(jiǎn)單,一個(gè)類只能有一個(gè)直接父類。

                                          • 繼承之后子類可以調(diào)用父類的所有非私有屬性和非私有方法。

                                          什么時(shí)候使用繼承呢?

                                          當(dāng)你想用一些非本類的方法或?qū)傩詴r(shí),可以使用繼承,繼承想使用的那個(gè)類,就可以將那個(gè)類中的屬性方法拿過(guò)來(lái)用,可以讓你少寫一些代碼。所以繼承是代碼重用的一種方式

                                          public class Animal{
                                            public static void eat(){
                                                      System.out.println("動(dòng)物吃");
                                                  }
                                          }
                                          public class Dog  extends Animal{
                                           public static   void main(String[] args) {
                                                  Dog dog = new Dog();
                                                  dog.eat();
                                              }
                                          }

                                          Java對(duì)象與Java類的詳細(xì)介紹

                                          專業(yè)術(shù)語(yǔ):

                                          Dog類是 Animal類的子類, Animal類是Dog類的父類(或者是) Dog類是 Animal類的派生類, Animal類是Dog類的基類。

                                          繼承的傳遞性

                                          C類從B類繼承,B類又從A類繼承

                                          那么C類就具有B類和A類的所有非私有的屬性和方法

                                          當(dāng)一個(gè)沒(méi)有繼承任何一個(gè)類時(shí),jvm(java虛擬機(jī))會(huì)默認(rèn)讓類繼承Object類

                                          Object是 java為所有類提供的基類

                                          繼承中的構(gòu)造方法

                                          子類構(gòu)造方法總是先調(diào)用父類構(gòu)造方法,默認(rèn)情況下,調(diào)用父類無(wú)參構(gòu)造方法

                                          可以在子類構(gòu)造方法的第一行,使用super關(guān)鍵字調(diào)用父類任意一個(gè)構(gòu)造方法

                                          如果用super,必須寫在方法的第一行

                                          如果子類的構(gòu)造方法中沒(méi)有顯式地(使用super)調(diào)用基類構(gòu)造方法,則系統(tǒng)默認(rèn)調(diào)用基類無(wú)參數(shù)的構(gòu)造方法。

                                          為什么要先創(chuàng)建父類:子類創(chuàng)建后需要調(diào)用父類的方法,所以在創(chuàng)建子類對(duì)象是父類也需要同時(shí)被創(chuàng)建.

                                          我們又提到了一個(gè)新的關(guān)鍵字——super

                                          super關(guān)鍵字用途

                                          • super關(guān)鍵字代表父類的引用,在程序中主要的用途

                                          • 在子類構(gòu)造方法中要調(diào)用父類的構(gòu)造方法,需要注意:super語(yǔ)句只能出現(xiàn)在子類構(gòu)造方法體的第一行。

                                          • 用“super.成員變量名”來(lái)引用父類成員變量。

                                          • 用“super.方法名(參數(shù)列表)”的方式訪問(wèn)父類的方法。

                                          • 與this的區(qū)別,this通常指代當(dāng)前對(duì)象,super通常指代父類。

                                          方法的重寫(OverRide)

                                          在子類中可以根據(jù)需要對(duì)從基類中繼承來(lái)的方法進(jìn)行重寫。

                                          方法重寫規(guī)則

                                          • 方法名相同、參數(shù)列表相同;

                                          • 返回值類型相同;

                                          • 訪問(wèn)權(quán)限等于或大于父類中方法權(quán)限;

                                          只有方法體不同(大括弧內(nèi)的代碼不同)

                                          注意:構(gòu)造方法不能重寫

                                          應(yīng)用場(chǎng)景: 當(dāng)父類的方法實(shí)現(xiàn)不能滿足子類需求時(shí),可以對(duì)方法進(jìn)行重寫( override)

                                          12.類于類之間的關(guān)系

                                          1.關(guān)聯(lián)關(guān)系(has-a)

                                          對(duì)象和對(duì)象之間的連接。在Java中,關(guān)聯(lián)關(guān)系的代碼表現(xiàn)形式為一個(gè)類做為另一個(gè)類的屬性類型存在。

                                          就是相當(dāng)于我們?cè)谖覀兊念愔卸x了一個(gè)String類型的屬性,那么,我們這個(gè)類和String類就是關(guān)聯(lián)關(guān)系。

                                          即“有”的關(guān)系:”has-a”。

                                          關(guān)聯(lián)關(guān)系分為單向關(guān)聯(lián)和雙向關(guān)聯(lián)

                                          • 單向關(guān)聯(lián): A類關(guān)聯(lián)B類。

                                          • 雙向關(guān)聯(lián):A類關(guān)聯(lián)B類,B類關(guān)聯(lián)A類;

                                          public class Phone {
                                               private  Person per;//手機(jī)有主人
                                          }
                                          public  class Person {
                                               private Phone phone;//人擁有手機(jī)
                                          }

                                          關(guān)聯(lián)關(guān)系的多重性

                                          一對(duì)一關(guān)聯(lián):一個(gè)手機(jī)只能有一個(gè)主人

                                          一對(duì)多關(guān)聯(lián):一個(gè)人,可以擁有多個(gè)手機(jī)。

                                          解決一對(duì)多的關(guān)聯(lián)的方案:集合或者數(shù)組

                                          public List<Phone> phoneList;//集合
                                          public Phone[] phones;//數(shù)組

                                          2.依賴關(guān)系(uses-a)

                                          依賴關(guān)系是指一個(gè)類A使用到了另一個(gè)類B,也就是說(shuō)一個(gè)類的方法使用或者操作另一個(gè)類的對(duì)象

                                          依賴關(guān)系的特性:

                                          這種關(guān)系是具有偶然性的、臨時(shí)性的、非常弱的,但是類B的變化會(huì)影響到類A。

                                          依賴具體表現(xiàn)

                                          在代碼層面,依賴關(guān)系表現(xiàn)為類B作為參數(shù)被類A在某個(gè)方法中使用

                                          例:

                                          public  class Person {
                                                public void travel(Bus bus){}
                                          }

                                          注意:

                                          應(yīng)該盡量減少類與類之間有這種關(guān)系

                                          3.繼承關(guān)系(is-a)

                                          這種關(guān)系在上文中有過(guò)解釋,在這就不贅述了,寫在這只是表明類與類還有這種關(guān)系。

                                          “Java對(duì)象與Java類的詳細(xì)介紹”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

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

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

                                          AI