最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

解析java中super的用法分析

 更新時(shí)間:2013年05月21日 16:21:15   作者:  
本篇文章是對(duì)java中super的用法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
昨天寫(xiě)this用法總結(jié)的時(shí)候,突然產(chǎn)生了一個(gè)問(wèn)題,請(qǐng)教別人之后,有了自己的一點(diǎn)認(rèn)識(shí)。還是把它寫(xiě)下來(lái),為大家更好的認(rèn)識(shí)提供一點(diǎn)思路。
1)有人寫(xiě)了個(gè)很好的初始化屬性的構(gòu)造函數(shù),而你僅僅想要在其中添加另一些自己新建屬性的初始化,這樣在一個(gè)構(gòu)造函數(shù)中調(diào)用另外一個(gè)構(gòu)造函數(shù),可以避免重復(fù)的代碼量,減少工作量;
2)在一個(gè)構(gòu)造函數(shù)中調(diào)用另外一個(gè)構(gòu)造函數(shù)的時(shí)候應(yīng)該用的是同一塊內(nèi)存空間,在默認(rèn)的構(gòu)造函數(shù)中先初始化變量,調(diào)用另一個(gè)的時(shí)候覆寫(xiě)已經(jīng)初始化的變量的值;
3)整個(gè)調(diào)用的過(guò)程和遞歸調(diào)用函數(shù)有點(diǎn)類似,不斷充氣球,直到整個(gè)氣球膨脹起來(lái),不斷的深層遞進(jìn),遇到停止標(biāo)記,逐層的跳出來(lái)。
寫(xiě)了段代碼,解釋我上面的敘述:
復(fù)制代碼 代碼如下:

class JavanTiger {
     int age;      // 年齡
     int hight;    // 身體高度

     public JavanTiger() {
         print();
         this.age=2;   //這里初始化 age 的值 ,但遞歸返回的時(shí)候,這個(gè)值會(huì)被覆寫(xiě)
     }

     public JavanTiger(int age) {
         this();      // 調(diào)用自己的第一個(gè)構(gòu)造函數(shù),下面的兩個(gè)語(yǔ)句數(shù)不執(zhí)行的
         this.age = age;
         print();
     }

     public JavanTiger(int age, int hight) {
         this(age);   // 調(diào)用自己第二個(gè)構(gòu)造函數(shù)  ,下面的兩個(gè)語(yǔ)句數(shù)不執(zhí)行的
         this.hight = hight;
         print();
     }

     public void print() {  //打印函數(shù)
         System.out.println("I'am a " + age + "歲 " + hight + "尺高 tiger!");
     }
     public static void main(String[] args) {
         new JavanTiger(3,3);
     }
 }
 //output
 //I'am a 0歲 0尺高 tiger!
 //I'am a 3歲 0尺高 tiger!
 //I'am a 3歲 3尺高 tiger!

個(gè)人理解就是這樣了,可能里面還有問(wèn)題,比如構(gòu)造函數(shù)遞歸調(diào)用和程序函數(shù)遞歸調(diào)用的機(jī)制是否似乎相同的?構(gòu)造函數(shù)同對(duì)象一起產(chǎn)生,也就是同時(shí)會(huì)分配內(nèi)存空間出來(lái),那門(mén)這樣的遞歸調(diào)用會(huì)不會(huì)打亂分配內(nèi)存的順序?希望看到的大牛們拍板,給個(gè)最好的解釋。
今天要總結(jié)的是 super 這個(gè)關(guān)鍵字的使用,super 在構(gòu)造函數(shù)中出現(xiàn)的時(shí)候一般是當(dāng)前這個(gè)類繼承了其他的類,super 的出現(xiàn)就是為了調(diào)用父類的構(gòu)造函數(shù),貼段代碼先
復(fù)制代碼 代碼如下:

class Tiger {
     int age; // 年齡
     int hight; // 身體高度

     public Tiger() {
         print();
     }

     public void print() {
         System.out.println("I'am a " + age + "歲 " + hight + "尺高 tiger!");
     }
 }
 public class JavanTiger extends Tiger {   
     public JavanTiger() {
         super();    // 調(diào)用父類無(wú)參數(shù)的構(gòu)造函數(shù)
     }
     public static void main(String[] args) {
         new JavanTiger();
     }
 }

其實(shí)在類JavanTiger 中的構(gòu)造函數(shù)中的 super()可以不寫(xiě),JAVA會(huì)默認(rèn)調(diào)用父類的無(wú)參數(shù)的構(gòu)造函數(shù),但如果父類沒(méi)有定義無(wú)參數(shù)的構(gòu)造函數(shù),沒(méi)有語(yǔ)法錯(cuò)誤,程序會(huì)自動(dòng)退出,沒(méi)有任何打印語(yǔ)句,這時(shí)候你需要手動(dòng)調(diào)用其他父類的構(gòu)造函數(shù),貼段代碼:
復(fù)制代碼 代碼如下:

class Tiger {
     int age; // 年齡
     int hight; // 身體高度

     public Tiger(int age) {
     this.age = age;
     print();
     }
     public void print() {
         System.out.println("I'am a " + age + "歲 " + hight + "尺高 tiger!");
     }
 }
 public class JavanTiger extends Tiger {   
     public JavanTiger() {
         super(1);    // 調(diào)用父類有參數(shù)的構(gòu)造函數(shù)
     }
     public static void main(String[] args) {
         new JavanTiger();
     }
 }

這段代碼中的 super(1)必須要寫(xiě)進(jìn)去,否則編譯器會(huì)報(bào)錯(cuò)。所以我簡(jiǎn)單的總結(jié)了一下,“this()是調(diào)用自己其他的構(gòu)造函數(shù),super()是調(diào)用自己繼承的父類的構(gòu)造函數(shù)“,如果只想調(diào)用默認(rèn)無(wú)參數(shù)的父類構(gòu)造函數(shù),不用在子類的構(gòu)造函數(shù)當(dāng)中寫(xiě)出來(lái),但是實(shí)際編程的時(shí)候,總是會(huì)忽略這一點(diǎn)。
那門(mén)這兩個(gè)關(guān)鍵字能不能同時(shí)出現(xiàn)在子類的一個(gè)構(gòu)造函數(shù)當(dāng)中納?答案肯定是不能。先說(shuō)下自己的理解:
1)在新建一個(gè)基類的時(shí)候,不論遞歸調(diào)用幾次自身的構(gòu)造函數(shù),最終你都會(huì)去調(diào)用父類的構(gòu)造函數(shù),(不是顯式調(diào)用的話,系統(tǒng)會(huì)調(diào)用默認(rèn)無(wú)參數(shù)的父類構(gòu)造函數(shù));
2)JAVA 中規(guī)定使用 this 和 super 時(shí)必須放在構(gòu)造函數(shù)第一行,只有一個(gè)第一行;

相關(guān)文章

  • idea中增強(qiáng)for循環(huán)提示unexpected token問(wèn)題

    idea中增強(qiáng)for循環(huán)提示unexpected token問(wèn)題

    這篇文章主要介紹了idea中增強(qiáng)for循環(huán)提示unexpected token問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • IDEA的TODO的使用方式

    IDEA的TODO的使用方式

    這篇文章主要介紹了IDEA的TODO的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Spring MVC的參數(shù)綁定和返回值問(wèn)題

    Spring MVC的參數(shù)綁定和返回值問(wèn)題

    這篇文章主要介紹了Spring MVC的參數(shù)綁定和返回值問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • JAVA多線程線程安全性基礎(chǔ)

    JAVA多線程線程安全性基礎(chǔ)

    這篇文章主要介紹了如何測(cè)試Java類的線程安全性,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2021-08-08
  • springboot項(xiàng)目中mybatis-plus@Mapper注入失敗問(wèn)題

    springboot項(xiàng)目中mybatis-plus@Mapper注入失敗問(wèn)題

    這篇文章主要介紹了springboot項(xiàng)目中mybatis-plus@Mapper注入失敗問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • java后臺(tái)驗(yàn)證碼生成的實(shí)現(xiàn)方法

    java后臺(tái)驗(yàn)證碼生成的實(shí)現(xiàn)方法

    在我們使用進(jìn)行系統(tǒng)開(kāi)發(fā)時(shí),為了提高系統(tǒng)的安全性,在登錄的時(shí)候多數(shù)人都會(huì)要求輸入驗(yàn)證,本文介紹了java后臺(tái)驗(yàn)證碼生成的實(shí)現(xiàn)方法,感興趣的一起來(lái)了解一下
    2021-05-05
  • Zuul 實(shí)現(xiàn)網(wǎng)關(guān)轉(zhuǎn)發(fā)的五種方式小結(jié)

    Zuul 實(shí)現(xiàn)網(wǎng)關(guān)轉(zhuǎn)發(fā)的五種方式小結(jié)

    這篇文章主要介紹了Zuul 實(shí)現(xiàn)網(wǎng)關(guān)轉(zhuǎn)發(fā)的五種方式小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Mybatis插入Oracle數(shù)據(jù)庫(kù)日期型數(shù)據(jù)過(guò)程解析

    Mybatis插入Oracle數(shù)據(jù)庫(kù)日期型數(shù)據(jù)過(guò)程解析

    這篇文章主要介紹了Mybatis插入Oracle數(shù)據(jù)庫(kù)日期型數(shù)據(jù)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Mybatis利用分頁(yè)插件PageHelper快速實(shí)現(xiàn)分頁(yè)查詢

    Mybatis利用分頁(yè)插件PageHelper快速實(shí)現(xiàn)分頁(yè)查詢

    如果你也在用MyBatis,建議嘗試該分頁(yè)插件,這一定是最方便使用的分頁(yè)插件,這篇文章主要給大家介紹了關(guān)于Mybatis利用分頁(yè)插件PageHelper快速實(shí)現(xiàn)分頁(yè)查詢的相關(guān)資料,PageHelper是一個(gè)Mybatis的分頁(yè)插件,負(fù)責(zé)將已經(jīng)寫(xiě)好的sql語(yǔ)句,進(jìn)行分頁(yè)加工,需要的朋友可以參考下
    2021-08-08
  • 分享java中設(shè)置代理的兩種方式

    分享java中設(shè)置代理的兩種方式

    有時(shí)候我們的程序中要提供可以使用代理訪問(wèn)網(wǎng)絡(luò),代理的方式包括http、https、ftp、socks代理。比如在IE瀏覽器設(shè)置代理,這里簡(jiǎn)單介紹下,需要的朋友可以參考下
    2015-12-12

最新評(píng)論

红桥区| 临沧市| 垦利县| 富平县| 上犹县| 阿瓦提县| 桐梓县| 张家川| 广河县| 唐山市| 克东县| 新野县| 贞丰县| 惠水县| 旌德县| 凉山| 大荔县| 中山市| 天峨县| 凭祥市| 邵武市| 鹤山市| 乌拉特中旗| 阿图什市| 丹巴县| 巴林右旗| 云阳县| 蒙阴县| 通榆县| 阳东县| 东乡族自治县| 稻城县| 五寨县| 巴楚县| 昭平县| 西宁市| 鄂伦春自治旗| 长泰县| 沅江市| 平塘县| 岳普湖县|