乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      好程序員大數(shù)據(jù)教程系列之繼承

       好程序員IT 2019-12-11

      好程序員大數(shù)據(jù)實(shí)用教程之繼承,首先講一下繼承的基本概念

      > 如果有多個(gè)類中有相同的特征和行為(屬性和方法),并且這多個(gè)類之間從邏輯上講是有一定的關(guān)聯(lián)的。那么此時(shí),我們可以將這些共同的部分單獨(dú)寫(xiě)到一個(gè)類中。

      >

      > > Monkey: name, age, gender,  walk(), sleep(), eat()

      > >

      > > Tiger: name, age, gender,  walk(), sleep(), eat()

      > >

      > > Elephent:  name, age, gender,  walk(), sleep(), eat()

      >

      > > 可以將上述三種類中,共同的部分提取出來(lái)

      > >

      > > Animalname, age, gender,  walk(), sleep(), eat()

      >

      > 此時(shí),被提取出的這個(gè)類,稱作是--**父類**,基類,超類

      >

      > 具有相同特征的那些類,稱作是--**子類**,派生類

      >

      > > A類派生出B類:AB的父類,BA的子類

      >

      > 他們之間的關(guān)系,是 **繼承**:子類繼承自父類

      關(guān)鍵字:**extends**

      > 用來(lái)描述兩個(gè)類之間的繼承關(guān)系

      >

      > ```java

      > class Monkey extends Animal {}

      > // Monkey繼承自Animal

      > // MonekyAnimal的子類,AnimalMonkey的父類

      > ```

      #### 繼承中的特點(diǎn)

      1. Java語(yǔ)言是單繼承的,一個(gè)類只能有一個(gè)父類,一個(gè)類可以有多個(gè)子類

         > 在某些語(yǔ)言中是支持多繼承的。例如:C++、python...

         >

         > 但是在多繼承中,會(huì)有一個(gè)問(wèn)題:二義性。

         >

         > 雖然很多語(yǔ)言都拋棄了多繼承,但是還是會(huì)用其他的方式來(lái)間接的實(shí)現(xiàn)類似多繼承。

         >

         > 例如:在java中是用接口實(shí)現(xiàn)的。

         >

         >  

         >

         > Java中所有的類都直接或者簡(jiǎn)介的繼承自 **Object**

      2. 子類可以訪問(wèn)到父類中能看的見(jiàn)的成員

         > 能看得見(jiàn)的:訪問(wèn)權(quán)限

      3. 構(gòu)造方法不能繼承。

      為什么要用繼承?

      1. 為了降低代碼冗余度

      2. 為了給一個(gè)類拓展功能。

         > 如果某一個(gè)類給我們提供的功能不能滿足我們的需求了,而且此時(shí)我們還不能修改這個(gè)類。那么我們要第一時(shí)間想到繼承。

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

      > 一個(gè)對(duì)象在實(shí)例化的時(shí)候,需要先去實(shí)例化從父類繼承到的成員

      >

      > 在實(shí)例化父類部分的時(shí)候,默認(rèn)使用父類中的無(wú)參構(gòu)造

      >

      >  

      >

      > 問(wèn)題:如果父類中沒(méi)有無(wú)參構(gòu)造,或者父類中的無(wú)參構(gòu)造子類無(wú)法訪問(wèn)(使用private修飾無(wú)參構(gòu)造),則此時(shí)子類對(duì)象無(wú)法完成實(shí)例化。

      >

      > 解決:

      >

      > 1. 給父類中添加一個(gè)子類能夠訪問(wèn)到的無(wú)參構(gòu)造方法

      >

      > 2. 在子類的構(gòu)造方法中,手動(dòng)調(diào)用父類中能夠訪問(wèn)到的構(gòu)造方法,來(lái)實(shí)例化父類部分

      #### 方法的重寫(xiě)

      > 繼承中最重要的一個(gè)知識(shí)點(diǎn)

      > 重寫(xiě),又叫做覆寫(xiě),值得是對(duì)同樣的一個(gè)方法,用子類的實(shí)現(xiàn)覆蓋掉父類的實(shí)現(xiàn)。

      > @Override:

      >

      >  是一個(gè)注解,常用在方法的重寫(xiě)中。表示在進(jìn)行方法重寫(xiě)之前,進(jìn)行一個(gè)驗(yàn)證。驗(yàn)證這個(gè)方法,到底是不是在重寫(xiě)父類中的方法。這個(gè)注解,可以添加,也可以不添加。但是,一般情況下,我們都是要加上去的

      > 在重寫(xiě)的時(shí)候需要注意的問(wèn)題:

      >

      > 1. 訪問(wèn)權(quán)限問(wèn)題:

      >

      >     子類方法的訪問(wèn)權(quán)限不能比父類方法中的訪問(wèn)權(quán)限低,要大于等于父類方法的訪問(wèn)權(quán)限

      >

      >     public > protected > default > private

      >

      > 2. 關(guān)于返回值類型:在重寫(xiě)的時(shí)候,要求方法名和參數(shù)必須和父類中方法相同

      >

      >     子類方法的返回值類型可以和父類方法中返回值類型相同。也可以是父類方法中返回值類型的子類型。

      >

      > 3. 關(guān)于異常的拋出。

      ####final關(guān)鍵字

      | 修飾 | 意義                                   |

      | ---- | -------------------------------------- |

      | 變量 | 這個(gè)變量的值不能改變,就是常量         |

      | 類   | 表示是一個(gè)最終類,這個(gè)類無(wú)法被繼承     |

      | 方法 | 表示是一個(gè)最終方法,這個(gè)方法無(wú)法被重寫(xiě) |

      #### super關(guān)鍵字的使用

      super表示對(duì)父類的引用。

      - 用在構(gòu)造方法中,可以使用super()調(diào)用父類的構(gòu)造方法

      - 在普通的方法中可以調(diào)用父類的方法

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

      > 用來(lái)描述一個(gè)類、方法、屬性、接口、枚舉...能夠被訪問(wèn)到的一個(gè)范圍

      >

      > 訪問(wèn)權(quán)限一共有四種:

      >

      > 公開(kāi)(public

      >

      > 保護(hù)(protected

      >

      > 包(default / package

      >

      > 私有(private

      >

      > public > protected > default > private

      >

      > 對(duì)應(yīng)的訪問(wèn)權(quán)限修飾符一共有三個(gè):

      >

      > public、protectedprivate

      >

      > > 注:包權(quán)限沒(méi)有訪問(wèn)權(quán)限修飾符,如果一個(gè)方法、屬性、類...沒(méi)有使用任意的訪問(wèn)權(quán)限修飾符來(lái)修飾,那么他的訪問(wèn)權(quán)限就是包權(quán)限

      | 訪問(wèn)權(quán)限  | 可以修飾什么 | 可以訪問(wèn)的范圍                                 |

      | --------- | ------------ | ---------------------------------------------- |

      | private   | 類成員       | 只能在當(dāng)前的類中訪問(wèn)                           |

      | default   | 類成員、類   | 只能在當(dāng)前的包中進(jìn)行訪問(wèn)                       |

      | protected | 類成員       | 可以在當(dāng)前的包中訪問(wèn),也可以在跨包的子類中訪問(wèn) |

      | public    | 類成員、類   | 可以在項(xiàng)目中任意的位置進(jìn)行訪問(wèn)                 |

      #### Object

      > Object這個(gè)類是所有類的父類,在Java中,所有的類都直接或者間接的繼承自Object

      >

      > Object類中,定義了一些我們比較常用的方法。

      ```java

      /**

       * 返回一個(gè)對(duì)象的字符串表示形式。

       * 這個(gè)方法,在一個(gè)對(duì)象需要轉(zhuǎn)型成字符串類型的時(shí)候,自動(dòng)調(diào)用

       * 例如:在控制臺(tái)輸出、和字符串做拼接

       */

      public String toString() {

          return "";

      }

      /**

       * 獲取一個(gè)對(duì)象的類型(Class對(duì)象)

       */

      public Class<?> getClass();

      /**

       * 用來(lái)比較兩個(gè)對(duì)象是否相同的,在Object類中,默認(rèn)還是比較兩個(gè)對(duì)象的地址

       * 可以重寫(xiě)equals,實(shí)現(xiàn)自己的比較的規(guī)則

       * 1、如果othernull,返回結(jié)果一定是false

       * 2、如果this == other,返回結(jié)果一定是true

       * 3、如果thisother的類型不同,返回結(jié)果一定是false

       * 4、如果x.equals(y) == true,那么 y.equals(x) 一定也得是true

       * 5、如果x.equals(y) == true, y.equals(z) == true, 那么 x.equals(z) 一定也得是true

       *

       * 如果兩個(gè)對(duì)象用來(lái)比較是否相同,盡量使用equals來(lái)比較。

       * 如果兩個(gè)基本數(shù)據(jù)類型是否相同,不要使用equals,直接使用==即可

       */

      public boolean equals(Object other) {

          return (this == other);

      }

      /**

       * 獲取一個(gè)對(duì)象的哈希碼、散列碼。

       * 如果在一個(gè)對(duì)象沒(méi)有在一個(gè)散列序列中的話,沒(méi)有任何作用。

       * 但是,如果一個(gè)對(duì)象是存儲(chǔ)在一個(gè)散列序列中,這個(gè)方法有大作用。

       * 散列序列: HashSetHashMap...

       */

      public int hashCode() ;

      /**

       * 析構(gòu)方法

       * 在實(shí)例化一個(gè)對(duì)象的時(shí)候,會(huì)執(zhí)行構(gòu)造方法。當(dāng)這個(gè)對(duì)象被銷毀之前,會(huì)執(zhí)行這個(gè)析構(gòu)方法。

       */

      protected void finalize() throws Throwable { }

      ```

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多