<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          大白話說(shuō)清楚 Java 中的 this 和 super 關(guān)鍵字!

          共 2130字,需瀏覽 5分鐘

           ·

          2021-03-15 09:33

          點(diǎn)擊上方藍(lán)色“小哈學(xué)Java”,選擇“設(shè)為星標(biāo)

          回復(fù)“資源”獲取獨(dú)家整理的學(xué)習(xí)資料!


          今天就用最通俗易懂的大白話來(lái)聊一聊 Java 中的 this 和 super 以及 this() 和 super()。

          1、this關(guān)鍵字

          package com.cj.study.thissuper;
           
          public class Student{
           
           public String name;
           
           public void setName(String name) {
            this.name = name;
           }
           
           public String getName() {
            return name;
           }
           
          }

          上述代碼是很常見(jiàn)的javabean的定義,里邊經(jīng)常會(huì)出現(xiàn)this這個(gè)關(guān)鍵字

          那有思考過(guò)為什么這里需要用this這個(gè)關(guān)鍵字嗎?

          為了更簡(jiǎn)單的解釋這個(gè)問(wèn)題,將上述的代碼改一下:

          把set方法里的this.name的this去掉,變成了name=name,就會(huì)發(fā)現(xiàn)個(gè)問(wèn)題,這2個(gè)name都是局部變量的name,這就變成了局部變量給局部變量賦值了, 但是咱們是想給對(duì)象的name賦值,并不是想給局部變量賦值,由于名稱一樣導(dǎo)致區(qū)分不出來(lái)了。

          所以必須用this來(lái)區(qū)分一下;當(dāng)然如果兩個(gè)不重名的話,name=nnn 這種的不加this是沒(méi)問(wèn)題的,這是因?yàn)樗窍仍诰植空易兞浚绻业搅司陀镁植孔兞浚瑳](méi)找到就去找全局變量。


          那這個(gè)this到底是啥呢?

          this是當(dāng)前對(duì)象的引用,就是說(shuō)當(dāng)前用構(gòu)造函數(shù)建的對(duì)象是誰(shuí),這個(gè)this就代表誰(shuí),它是一個(gè)引用

          另外一個(gè)問(wèn)題,如果構(gòu)造函數(shù)想調(diào)用另一個(gè)構(gòu)造函數(shù)該怎么辦呢?

          這個(gè)時(shí)候就需要使用this()了

          注意:如果在構(gòu)造函數(shù)里調(diào)用其他重載的構(gòu)造函數(shù)時(shí),則,被調(diào)用的那個(gè)構(gòu)造函數(shù)必須放在代碼的第一行。

          下邊是示例:

          正確的

          錯(cuò)誤的

          2、super關(guān)鍵字

          上述例子是父類里定義了一個(gè)字段是num,子類里沒(méi)有定義,所以最后的輸出結(jié)果是showNum=4

          但是如果子類也定義了一個(gè)num值為5,那打印出來(lái)的一定是5,因?yàn)樵谡{(diào)用成員(成員變量和成員方法)時(shí)如果不特殊標(biāo)明,前邊其實(shí)默認(rèn)省略了this,他默認(rèn)調(diào)用的是子類的。

          但是如果這時(shí)候我就想用父類的不想用子類的,怎么辦

          這時(shí)候又出現(xiàn)了區(qū)分不出來(lái)的情況,所以要用super來(lái)標(biāo)明你要調(diào)用父類的,而不是子類的

          當(dāng)只有父類有,子類沒(méi)有的情況下,則調(diào)的是父類的(因?yàn)樽宇惱^承了父類,子類就擁有了父類出了私有外的所有東西)

          當(dāng)父類和子類都有的情況下,默認(rèn)調(diào)用的是子類的,但是用super標(biāo)明了以后調(diào)的是父類的

          如上圖所示,this和super的引用是這樣指向?qū)ο蟮某蓡T變量和方法。

          this指向了不僅父類可繼承的成員變量和可繼承的方法外,它還指向了子類的成員變量和方法

          而super僅僅只是指向了子類對(duì)象中從父類繼承的成員變量和方法。

          那如果子類 構(gòu)造函數(shù)想調(diào)用父類的構(gòu)造函數(shù), 怎么辦?

          這時(shí)候可以用super();

          注意: 在子類的構(gòu)造函數(shù)里都必須去調(diào)用父類的構(gòu)造函數(shù),你不寫(xiě)其實(shí)第一行都有一個(gè)隱式的super();

          如果父類里不定義無(wú)參的構(gòu)造的話子類的構(gòu)造函數(shù)會(huì)報(bào)錯(cuò),所以說(shuō)明在子類的構(gòu)造函數(shù)默認(rèn)的都有一句隱式的super();

          你的構(gòu)造函數(shù)里默認(rèn)的都有一個(gè)隱式的super();去調(diào)用父類無(wú)參的構(gòu)造,但是如果你的構(gòu)造函數(shù)里不想調(diào)用默認(rèn)的父類無(wú)參構(gòu)造,而是想調(diào)用父類其他的構(gòu)造函數(shù),則你可以顯式的寫(xiě)出來(lái),而且如果你寫(xiě)了則調(diào)用父類的supper(xxx) 必須放在第一行。

          以上就是對(duì)this和super的一些總結(jié),希望對(duì)大家有所幫助!


          作者:嗑嗑磕嗑瓜子的貓
          鏈接:blog.csdn.net/ju_362204801/article/details/91046744
          版權(quán)聲明:本文為博主原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接和本聲明。

          1. 基于SpringBoot 的CMS系統(tǒng),拿去開(kāi)發(fā)企業(yè)官網(wǎng)真香

          2. 跳表 【會(huì)跳的鏈表原來(lái)這么diao】

          3. 2020 國(guó)內(nèi)互聯(lián)網(wǎng)公司的薪酬、加班時(shí)長(zhǎng)排名 !

          4. MySQL與Redis緩存的同步方案

          最近面試BAT,整理一份面試資料Java面試BATJ通關(guān)手冊(cè),覆蓋了Java核心技術(shù)、JVM、Java并發(fā)、SSM、微服務(wù)、數(shù)據(jù)庫(kù)、數(shù)據(jù)結(jié)構(gòu)等等。

          獲取方式:點(diǎn)“在看”,關(guān)注公眾號(hào)并回復(fù) Java 領(lǐng)取,更多內(nèi)容陸續(xù)奉上。

          文章有幫助的話,在看,轉(zhuǎn)發(fā)吧。

          謝謝支持喲 (*^__^*)

          瀏覽 38
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  中文黄色电影 | 成年人电影久久 | 国产在线资源 | 伊人天堂网 | 日韩AⅤ无码一区二区三区 |